using Adplay.Behaviours;
using Adplay.Model;
using Adplay.Utility;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

namespace Adplay.DataContainer
{
    [CreateAssetMenu(fileName = nameof(EngagementData), menuName = PathUtility.DataContainerPath + nameof(EngagementData))]
    public class EngagementData : ScriptableObject
    {
        [SerializeField] private List<Engagement> activeEngagement = new();

        public void Clear()
        {
            activeEngagement.Clear();
        }

        public void CreateEngagement(int adId, EngagementType engagementType, Creative creative)
        {
            var engagement = new Engagement()
            {
                Id = adId,
                CampaignId = creative.CampaignId,
                Platform = Application.platform == RuntimePlatform.Android ? Platform.AND : Platform.IOS,
                EngagementType = engagementType,
                AppId = 0,//TODO
                DeviceModel = AdPlayUtility.UniqueDeviceId,
                PublisherId = 0,//TODO
                UserIp = AdPlayUtility.PublicIp,
                GoogleAdId = AdPlayUtility.GoogleAdId,
                RegionId = 0,//TODO
                ZoneId = creative.ZoneId,
                CreativeId = creative.Id,//TODO
                AngleQuality = 0,//currently need this ?
                ScreenCoverage = 0,//currently need this ?
                VisibilityScore = 0,//currently need this ?
                Cost = creative.Price,
            };

            activeEngagement.Add(engagement);
            AdPlayBatchSender.SendBatch(engagement);
        }

        public void UpdateDuration(int adId, float duration)
        {
            var engagement = activeEngagement.FirstOrDefault(e => e.Id == adId);
            if (engagement != null)
            {
                engagement.Duration = (int)duration;
            }
        }

        
    }
}
