public SubscriptionOffer GetNewOffer()
 {
     
     SubscriptionOffer offer = new SubscriptionOffer();
     offer.OfferStartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59).AddDays(3);
     offer.OfferEndDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59).AddDays(30);
     offer.OfferDate = DateTime.Now;
     offer.IsActive = true;
     List<SubscriptionPeriod> Periods = CookBazaarContext.SubscriptionPeriods.Where(c => c.IsActive == true).ToList();
     List<Day> Days = CookBazaarContext.Days.ToList();
     offer.PeriodsControl.Clear();
     offer.DaysControl.Clear();
     foreach (SubscriptionPeriod period in Periods)
     {
         offer.PeriodsControl.Add(new SubscriptionPeriodControl()
         {
             IsCheck = false,
             PeriodID = period.PeriodID,
             PeriodName = Domain.Resources.LKP.Subscriptions.SubscriptionPeriods.SubscriptionPeriod.PeriodNameTextField == "EnglsihPeriodName" ? period.EnglishPeriodName : period.ArabicPeriodName
         });                
     }
     foreach (Day day in Days)
     {
         offer.DaysControl.Add(new DayControl()
         {
             IsCheck = false,
             DayID = day.DayID,
             DayName = Domain.Resources.LKP.Days.Day.DayNameTextField == "EnglishDayName" ? day.EnglishDayName : day.ArabicDayName
         });
     }
     return offer;
 }
        public dynamic Delete(int id)
        {
            var result = new { state = "", title = "", message = "", close = false };
            try
            {
                if (IsModelStateValid)
                {
                    SubscriptionOffer offer = CookBazaarContext.SubscriptionOffers.Find(id);
                    CookBazaarContext.SubscriptionOffers.Remove(offer);
                    CookBazaarContext.SaveChanges();
                    result = new
                    {
                        state = "success",
                        title = Domain.Resources.GeneralMessage.SuccessTitle,
                        message = Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.DeletingSuccessfully,
                        close = true
                    };
                }
                else
                {
                    result = new
                    {
                        state = "warning",
                        title = Domain.Resources.GeneralMessage.ErrorTitle,
                        message = Domain.Resources.GeneralMessage.ErrorWhileProcessingData,
                        close = false
                    };
                }
            }
            catch (Exception ex)
            {
                if (ex.InnerException.InnerException.Message.Contains("REFERENCE"))
                {
                    result = new
                    {
                        state = "warning",
                        title = Domain.Resources.GeneralMessage.ErrorTitle,
                        message = Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.RelatedDataException,
                        close = false
                    };
                }
                else
                {
                    Repository.ExceptionLog.AddException(ex, "SubscriptionOfferRep/Delete", "");
                    result = new
                    {
                        state = "warning",
                        title = Domain.Resources.GeneralMessage.ErrorTitle,
                        message = Domain.Resources.GeneralMessage.GeneralExceptionMessage,
                        close = false
                    };
                }
            }
            return result;

        }
 public dynamic Add(SubscriptionOffer offer)
 {
     var result = new { state = "", title = "", message = "", close = false };
     try
     {
         if (IsModelStateValid)
         {
             CookBazaarContext.SubscriptionOffers.Add(offer);
             foreach (SubscriptionPeriodControl period in offer.PeriodsControl)
             {
                 if(period.IsCheck)
                 offer.subscriptionPeriods.Add(CookBazaarContext.SubscriptionPeriods.Find(period.PeriodID));
             }
             foreach (DayControl day in offer.DaysControl)
             {
                 if (day.IsCheck)
                 offer.WorkingDays.Add(CookBazaarContext.Days.Find(day.DayID));
             }
             CookBazaarContext.SaveChanges();
             result = new
             {
                 state = "success",
                 title = Domain.Resources.GeneralMessage.SuccessTitle,
                 message = Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.AddingSuccessfully,
                 close = true
             };
         }
         else
         {
             result = new
             {
                 state = "warning",
                 title = Domain.Resources.GeneralMessage.ErrorTitle,
                 message = Domain.Resources.GeneralMessage.ErrorWhileProcessingData,
                 close = false
             };
         }
     }
     catch (Exception ex)
     {
         Repository.ExceptionLog.AddException(ex, "SubscriptionOfferRep/Add", "");
         result = new
         {
             state = "warning",
             title = Domain.Resources.GeneralMessage.ErrorTitle,
             message = Domain.Resources.GeneralMessage.ErrorWhileSaving,
             close = false
         };
     }
     return result;
 }
        // popup for itemdetail
        //GET : Search/ItemDetail/2
        public async Task <ActionResult> ItemDetail(int Id)
        {
            SubscriptionOffer model     = new SubscriptionOffer();
            var SubscriptionOfferDetail = getOffer.GetOfferByID(Id);
            var OfferDetail             = await getOffer.GetFrontSearchItems();

            if (SubscriptionOfferDetail != null)
            {
                model.OfferID              = Id;
                model.EnglishOfferName     = SubscriptionOfferDetail.EnglishOfferName;
                model.OfferIMG             = SubscriptionOfferDetail.OfferIMG;
                model.EnglishDescriptions  = SubscriptionOfferDetail.EnglishDescriptions;
                model.subscriptionCategory = SubscriptionOfferDetail.subscriptionCategory;
                model.OfferStartDate       = (SubscriptionOfferDetail.OfferStartDate);
                model.OfferEndDate         = SubscriptionOfferDetail.OfferEndDate;
                model.DeliveryEnd          = SubscriptionOfferDetail.DeliveryEnd;
                model.DeliveryStart        = SubscriptionOfferDetail.DeliveryStart;
                model.city                = SubscriptionOfferDetail.city;
                model.Price               = SubscriptionOfferDetail.Price;
                model.WorkingDays         = SubscriptionOfferDetail.WorkingDays;
                model.subscriptionPeriods = SubscriptionOfferDetail.subscriptionPeriods;
                foreach (var item in SubscriptionOfferDetail.subscriptionPeriods)
                {
                    decimal price      = item.WorkingDays * model.Price;
                    decimal Discount   = (price * item.Discount) / 100;
                    decimal TotalPrice = price - Discount;
                    item.EnglishPeriodName = item.EnglishPeriodName + " : " + TotalPrice;
                }
                var lastItem = SubscriptionOfferDetail.WorkingDays.Last();
                foreach (var item in SubscriptionOfferDetail.WorkingDays)
                {
                    if (item.Equals(lastItem))
                    {
                        item.EnglishDayName = item.EnglishDayName;
                    }
                    else
                    {
                        item.EnglishDayName = item.EnglishDayName + ",";
                    }
                }
                model.IsActive     = SubscriptionOfferDetail.IsActive;
                model.OfferEndDate = SubscriptionOfferDetail.OfferEndDate;
            }
            return(PartialView("_ItemDetail", model));
        }
 public dynamic Active(int id)
 {
     var result = new { state = "", title = "", message = "", close = false };
     try
     {
         if (IsModelStateValid)
         {
             SubscriptionOffer offer = CookBazaarContext.SubscriptionOffers.Find(id);
             offer.IsActive = !offer.IsActive;
             CookBazaarContext.Entry(offer).State = EntityState.Modified;
             CookBazaarContext.SaveChanges();
             result = new
             {
                 state = "success",
                 title = Domain.Resources.GeneralMessage.SuccessTitle,
                 message = (offer.IsActive ? Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.ActivatingSuccessfully : Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.DeactivatingSuccessfully),
                 close = true
             };
         }
         else
         {
             result = new
             {
                 state = "warning",
                 title = Domain.Resources.GeneralMessage.ErrorTitle,
                 message = Domain.Resources.GeneralMessage.ErrorWhileProcessingData,
                 close = false
             };
         }
     }
     catch (Exception ex)
     {
         Repository.ExceptionLog.AddException(ex, "SubscriptionOfferRep/Active", "");
         result = new
         {
             state = "warning",
             title = Domain.Resources.GeneralMessage.ErrorTitle,
             message = Domain.Resources.GeneralMessage.GeneralExceptionMessage,
             close = false
         };
     }
     return result;
 }
 public dynamic Edit(SubscriptionOffer offer)
 {
     var result = new { state = "", title = "", message = "", close = false };
     try
     {
         if (IsModelStateValid)
         {
             CookBazaarContext.Entry(offer).State = EntityState.Modified;
             CookBazaarContext.SaveChanges();
             result = new
             {
                 state = "success",
                 title = Domain.Resources.GeneralMessage.SuccessTitle,
                 message = Domain.Resources.SYS.SubscriptionOffers.SubscriptionOffer.EdittingSuccessfully,
                 close = true
             };
         }
         else
         {
             result = new
             {
                 state = "warning",
                 title = Domain.Resources.GeneralMessage.ErrorTitle,
                 message = Domain.Resources.GeneralMessage.ErrorWhileProcessingData,
                 close = false
             };
         }
     }
     catch (Exception ex)
     {
         Repository.ExceptionLog.AddException(ex, "SubscriptionOfferRep/Edit", "");
         result = new
         {
             state = "warning",
             title = Domain.Resources.GeneralMessage.ErrorTitle,
             message = Domain.Resources.GeneralMessage.ErrorWhileSaving,
             close = false
         };
     }
     return result;
 }