using Adplay.Model;
using Adplay.Utility;
using Adplay.View;
using System.Threading.Tasks;
using UnityEngine;

namespace Adplay.Behaviours.Actions
{
    public class AdPlayBanner : AdPlayAction
    {
        public async override Task<AdRequestInfo> GetAd(AdPlayTemplate template)
        {
            if (template.Image == null)
            {
                Debug.LogError($"Adplay banner request failed: Image is null");
                return new AdRequestInfo(AdRequestResultState.MissingRequiredComponent, "Adplay banner request failed: Image is null");
            }
            var ad = activeAds.GetActiveAd(AdType.Banner);
            int counter = 0;
            while (ad == null && counter < 10)
            {
                await Task.Delay(AdPlayUtility.DelayMilliTime);
                ad = activeAds.GetActiveAd(AdType.Banner);
                counter++;
            }
            if (ad == null)
            {
                return new AdRequestInfo(AdRequestResultState.NoActiveAd);
            }

            Sprite sprite = ad.Sprite;
            template.Hide();
            template.SetSprite(sprite);
            engagementData.CreateEngagement(ad.Id, EngagementType.IMP, ad.Creative);

            template.Show();

            return new AdRequestInfo(AdRequestResultState.Success);
        }
    }
}
