//Returns month wise Campaign and coupon message as per client
        public static List<MessageSentCountDTO> GetMonthWiseCampaignAndCouponMsssageSentCount(int ClientId)
        {
            string From = CommonService.FirstDayOfMonth(System.DateTime.Now.Date);
            string To = CommonService.LastDayOfMonth(Convert.ToDateTime(From));
            int MaxTo = 6;
            int CampaignSMSCount = 0;
            int EcouponCampaignSMSCount = 0;

            List<MessageSentCountDTO> MessageSentCountDTOList = new List<MessageSentCountDTO>();
            try
            {
                for (MaxTo = 1; MaxTo <= 6; MaxTo++)
                {

                    UnitOfWork uow = new UnitOfWork();
                    IEnumerable<Campaign> Campaign = uow.CampaignRepo.GetAll().Where(e => e.ClientId == ClientId && e.Status == CampaignStatus.Sent && (e.CreatedDate >= Convert.ToDateTime(From) && e.CreatedDate <= Convert.ToDateTime(To)) && (e.ScheduledDate >= Convert.ToDateTime(From) && e.ScheduledDate <= Convert.ToDateTime(To))); //e.IsSent == true

                    IEnumerable<EcouponCampaign> EcouponCampaign = uow.EcouponCampaignRepo.GetAll().Where(e => e.ClientId == ClientId && e.IsSent == true && (e.SendOn >= Convert.ToDateTime(From) && e.SendOn <= Convert.ToDateTime(To)) && (e.CreatedDate >= Convert.ToDateTime(From) && e.CreatedDate <= Convert.ToDateTime(To)));

                    MessageSentCountDTO MessageSentCountDTO = new MessageSentCountDTO();
                    if (MaxTo == 1)
                    {
                        MessageSentCountDTO.Days = "Current Month";
                    }
                    else
                    {
                        DateTime month = Convert.ToDateTime(From);
                        //MessageSentCountDTO.Days = Convert.ToDateTime(From).Month.ToString();
                        MessageSentCountDTO.Days = month.ToString("MMMMMMM");
                    }

                    foreach (var item in Campaign)
                    {

                        CampaignSMSCount = CampaignSMSCount + item.RecipientsCount;
                        MessageSentCountDTO.CampaignCount = CampaignSMSCount;
                    }

                    foreach (var item in EcouponCampaign)
                    {

                        EcouponCampaignSMSCount = EcouponCampaignSMSCount + item.RecipientsCount;
                        MessageSentCountDTO.EcouponCampaignCount = EcouponCampaignSMSCount;
                    }

                    MessageSentCountDTO.TotalCount = MessageSentCountDTO.EcouponCampaignCount + MessageSentCountDTO.CampaignCount;

                    MessageSentCountDTOList.Add(MessageSentCountDTO);

                    EcouponCampaignSMSCount = 0;
                    CampaignSMSCount = 0;

                    From = Convert.ToDateTime(From).AddMonths(-1).ToString();
                    To = Convert.ToDateTime(To).AddMonths(-1).ToString();
                    From = CommonService.FirstDayOfMonth(Convert.ToDateTime(From));
                    To = CommonService.LastDayOfMonth(Convert.ToDateTime(From));
                }

                return MessageSentCountDTOList;

            }
            catch
            {
                throw;
            }
        }
        //Returns day wise Campaign and coupon message as per client
        public static List<MessageSentCountDTO> GetDayWiseCampaignAndCouponMsssageSentCount(int ClientId)
        {
            int From = 0;
            int To = 30;
            int MaxTo = 360;
            int CampaignSMSCount = 0;
            int EcouponCampaignSMSCount = 0;

            List<MessageSentCountDTO> MessageSentCountDTOList = new List<MessageSentCountDTO>();
            try
            {
                for (To = 30; To <= MaxTo; To = To + 30)
                {
                    int Fromdays = From;
                    if (From != 0)
                    {
                        Fromdays = -From;
                    }

                    int Todays = -To;

                    UnitOfWork uow = new UnitOfWork();
                    IEnumerable<Campaign> Campaign = uow.CampaignRepo.GetAll().Where(e => e.ClientId == ClientId && e.Status == CampaignStatus.Sent && e.CreatedDate > System.DateTime.Now.Date.AddDays(Todays) && e.CreatedDate < System.DateTime.Now.Date.AddDays(Fromdays)).OrderByDescending(e => e.Id); //e.IsSent == true|| e.ScheduledDate > System.DateTime.Now.AddDays(-Todays) && e.ScheduledDate < System.DateTime.Now.AddDays(Fromdays)

                    IEnumerable<EcouponCampaign> EcouponCampaign = uow.EcouponCampaignRepo.GetAll().Where(e => e.ClientId == ClientId && e.IsSent == true && e.SendOn > System.DateTime.Now.Date.AddDays(Todays) && e.SendOn < System.DateTime.Now.Date.AddDays(Fromdays));

                    MessageSentCountDTO MessageSentCountDTO = new MessageSentCountDTO();
                    MessageSentCountDTO.Days = From + " To " + To;
                    foreach (var item in Campaign)
                    {

                        CampaignSMSCount = CampaignSMSCount + item.RecipientsCount;
                        MessageSentCountDTO.CampaignCount = CampaignSMSCount;
                    }

                    foreach (var item in EcouponCampaign)
                    {

                        EcouponCampaignSMSCount = EcouponCampaignSMSCount + item.RecipientsCount;
                        MessageSentCountDTO.EcouponCampaignCount = EcouponCampaignSMSCount;
                    }

                    MessageSentCountDTO.TotalCount = MessageSentCountDTO.EcouponCampaignCount + MessageSentCountDTO.CampaignCount;

                    MessageSentCountDTOList.Add(MessageSentCountDTO);

                    EcouponCampaignSMSCount = 0;
                    CampaignSMSCount = 0;
                    if (To == 30)
                    {
                        From = From + To + 1;
                    }
                    else
                    {
                        From = From + 30;
                    }

                }

                return MessageSentCountDTOList;

            }
            catch
            {
                throw;
            }
        }
        //Get day wise ecoupon campaign message count list
        public static List<MessageSentCountDTO> GetDayWiseEcouponCampaignMsssageSentCount(int ClientId)
        {
            int From = 0;
            int To = 30;
            int MaxTo = 360;
            int SMSCount = 0;

            List<MessageSentCountDTO> MessageSentCountDTOList = new List<MessageSentCountDTO>();
            try
            {
                for (To = 30; To <= MaxTo; To = To + 30)
                {
                    int Fromdays = From;
                    if (From != 0)
                    {
                        Fromdays = -From;
                    }

                    int Todays = -To;

                    UnitOfWork uow = new UnitOfWork();
                    IEnumerable<EcouponCampaign> EcouponCampaign = uow.EcouponCampaignRepo.GetAll().Where(e => e.ClientId == ClientId && e.IsSent == true && e.SendOn > System.DateTime.Now.Date.AddDays(Todays) && e.SendOn < System.DateTime.Now.Date.AddDays(Fromdays));

                    MessageSentCountDTO MessageSentCountDTO = new MessageSentCountDTO();
                    MessageSentCountDTO.Days = From + " To " + To;
                    foreach (var item in EcouponCampaign)
                    {

                        SMSCount = SMSCount + item.RecipientsCount;
                        MessageSentCountDTO.EcouponCampaignCount = SMSCount;
                    }

                    MessageSentCountDTOList.Add(MessageSentCountDTO);

                    From = From + To + 1;
                }

                return MessageSentCountDTOList;

            }
            catch
            {
                throw;
            }
        }