//Create redeemed Count
        public static int Create(RedeemedCountDTO RedeemedCountDTO)
        {
            try
            {
                var RedeemedCount = new RedeemedCount();

                GlobalSettings.LoggedInClientId = RedeemedCountDTO.ClientId;
                GlobalSettings.LoggedInUserId = RedeemedCountDTO.UserId;
                int PartnerId = ClientService.GetById(RedeemedCountDTO.ClientId).PartnerId;
                GlobalSettings.LoggedInPartnerId = PartnerId;

                UnitOfWork uow = new UnitOfWork();
                RedeemedCount = Transform.RedeemedCountToDomain(RedeemedCountDTO);
                uow.RedeemedCountRepo.Insert(RedeemedCount);

                uow.SaveChanges();
                RedeemedCount.Id = RedeemedCount.Id;
                return RedeemedCount.Id;

            }

            catch (Exception)
            {
                throw;
            }
        }
        //Edit redeemed count
        public static void Edit(RedeemedCountDTO RedeemedCountDTO)
        {
            try
            {
                GlobalSettings.LoggedInClientId = RedeemedCountDTO.ClientId;
                GlobalSettings.LoggedInUserId = RedeemedCountDTO.UserId;
                int PartnerId = ClientService.GetById(RedeemedCountDTO.ClientId).PartnerId;
                GlobalSettings.LoggedInPartnerId = PartnerId;

                UnitOfWork uow = new UnitOfWork();
                RedeemedCount RedeemedCount = Transform.RedeemedCountToDomain(RedeemedCountDTO);
                uow.RedeemedCountRepo.Update(RedeemedCount);
                uow.SaveChanges();
            }
            catch
            {
                throw;
            }
        }
        //Get reedeemed count by clinet id and campaign id
        public static List<RedeemedCountDTO> GetByClientId(int ClientId, int CampaignId)
        {
            List<RedeemedCountDTO> RedeemedCountDTOList = new List<RedeemedCountDTO>();
            try
            {
                UnitOfWork uow = new UnitOfWork();
                IEnumerable<RedeemedCount> RedeemedCount = uow.RedeemedCountRepo.GetAll().Where(e => e.ClientId == ClientId && e.EcouponCampaignId == CampaignId);
                if (RedeemedCount != null)
                {
                    foreach (var item in RedeemedCount)
                    {
                        EcouponCampaignDTO EcouponCampaignDTO = new EcouponCampaignDTO();
                        EcouponCampaignDTO = EcouponCampaignService.GetById(item.EcouponCampaignId);
                        if (EcouponCampaignDTO.ExpiresOn > System.DateTime.Now)
                        {

                            RedeemedCountDTO RedeemedCountDTO = new RedeemedCountDTO();
                            RedeemedCountDTO = Transform.RedeemedCountToDTO(item);

                            UserDTO UserDTO = new UserDTO();
                            UserDTO = UserService.GetById(item.UserId);
                            RedeemedCountDTO.UserName = UserDTO.Name;
                            RedeemedCountDTO.Location = LocationService.GetById(UserDTO.LocationId).Name;
                            ClientDTO ClientDTO = new ClientDTO();
                            ClientDTO = ClientService.GetById(ClientId);
                            RedeemedCountDTO.ClientName = ClientDTO.Company;
                            RedeemedCountDTO.CampaignName = EcouponCampaignDTO.Title;
                            RedeemedCountDTOList.Add(RedeemedCountDTO);
                        }
                    }
                }

                return RedeemedCountDTOList;
            }
            catch
            {
                //  throw;
                return RedeemedCountDTOList;
            }
        }
 public static RedeemedCount RedeemedCountToDomain(RedeemedCountDTO RedeemedCountDTO)
 {
     if (RedeemedCountDTO == null) return null;
      Mapper.CreateMap<RedeemedCountDTO, RedeemedCount>();
      RedeemedCount RedeemedCount = Mapper.Map<RedeemedCount>(RedeemedCountDTO);
      return RedeemedCount;
 }
        //Update Redeem Count
        public static void UpdateRedeemCount(int UserId, int ClientId, int EcouponCampaignId)
        {
            List<RedeemedCountDTO> RedeemedCountDTOList = new List<RedeemedCountDTO>();
            try
            {
                RedeemedCountDTOList = RedeemedCountService.GetByUserId(UserId, EcouponCampaignId);//.Where(e => e.EcouponCampaignId ==EcouponCampaignId);
                if (RedeemedCountDTOList.Count > 0)
                {
                    //Edit RedeemedCount
                    foreach (var item in RedeemedCountDTOList)
                    {
                        RedeemedCountDTO RedeemedCountDTO = new RedeemedCountDTO();
                        RedeemedCountDTO = item;
                        RedeemedCountDTO.RedeemCount = RedeemedCountDTO.RedeemCount + 1;
                        RedeemedCountService.Edit(RedeemedCountDTO);
                    }

                }
                else
                {
                    //Create RedeemedCount
                    int RedeemedCount = 0;
                    RedeemedCountDTO RedeemedCountDTO = new RedeemedCountDTO();
                    RedeemedCountDTO.ClientId = ClientId;
                    RedeemedCountDTO.UserId = UserId;
                    RedeemedCountDTO.EcouponCampaignId = EcouponCampaignId;
                    RedeemedCountDTO.RedeemCount = 1;
                    RedeemedCount = RedeemedCountService.Create(RedeemedCountDTO);

                }

            }
            catch
            {
                throw;
            }
        }