public ActionResult Save(SlsPromotionalOfferViewModel obj)
        {
            int userId = Convert.ToInt32(Session["userId"]);

            Operation objOperation = new Operation { Success = false };

            if (ModelState.IsValid)
            {
                if (obj.Id == 0)
                {
                    if ((bool)Session["Add"])
                    {
                        obj.CreatedBy = userId;
                        obj.CreatedDate = DateTime.Now.Date;
                        objOperation = _promotionalOfferService.Save(obj);
                    }
                    else { objOperation.OperationId = -1; }

                }
                else
                {
                    if ((bool)Session["Edit"])
                    {
                        obj.ModifiedBy = userId;
                        obj.ModifiedDate = DateTime.Now.Date;
                        objOperation = _promotionalOfferService.Update(obj);
                    }
                    else { objOperation.OperationId = -2; }
                }
            }

            return Json(objOperation, JsonRequestBehavior.DenyGet);
        }
        public Operation Delete(SlsPromotionalOfferViewModel obj)
        {
            Operation objOperation = new Operation { Success = true, OperationId = obj.Id };
            SlsPromotionalOffer offer = SlsPromotionalOfferMapVMToModel.MapToSlsPromotionalOffer(obj);
            _promotionalOfferRepository.Delete(offer);

            try
            {
                _unitOfWork.Commit();
            }
            catch (Exception)
            {

                objOperation.Success = false;
            }
            return objOperation;
        }
        public static SlsPromotionalOffer MapToSlsPromotionalOffer(SlsPromotionalOfferViewModel obj)
        {
            SlsPromotionalOffer model = new SlsPromotionalOffer();

            model.Id = obj.Id;
            model.Title = obj.Title;
            model.SlsRegionId = obj.SlsRegionId;
            model.StartDate = obj.StartDate;
            model.EndDate = obj.EndDate;
            model.Remarks = obj.Remarks;
            model.IsValid = obj.IsValid;
            model.CreatedBy = obj.CreatedBy;
            model.CreatedDate = obj.CreatedDate;
            model.ModifiedBy = obj.ModifiedBy;

            model.ModifiedDate = obj.ModifiedDate;

            return model;
        }
        public Operation Update(SlsPromotionalOfferViewModel obj)
        {
            Operation objOperation = new Operation { Success = false };
            using (var dbContextTransaction = _promotionalOfferRepository.BeginTransaction())
            {
                try
                {
                    objOperation = new Operation { Success = true, OperationId = obj.Id };
                    SlsPromotionalOffer offer = SlsPromotionalOfferMapVMToModel.MapToSlsPromotionalOffer(obj);
                    _promotionalOfferRepository.Update(offer);
                    _promotionalOfferRepository.SaveChanges();

                    //add or update categories offered to each offer
                    IList<SlsPromotionalOfferDetail> offerDetailList = new List<SlsPromotionalOfferDetail>();
                    foreach (SlsPromotionalOfferDetailViewModel categoryOffered in obj.OfferCategories)
                    {
                        SlsPromotionalOfferDetail offerDetail = SlsPromotionalOfferMapVMToModel.MapToSlsPromotionalOfferDetail(categoryOffered);
                        if (categoryOffered.IsOffered)
                        {
                            offerDetail.SlsPromotionalOfferId = offer.Id;
                            if (offerDetail.Id <= 0)
                                offerDetailList.Add(offerDetail);
                            //_promotionalOfferDetailRepository.AddEntity(offerDetail);
                            else
                                _promotionalOfferDetailRepository.Update(offerDetail);
                        }
                        else
                        {
                            if (offerDetail.Id > 0)
                            {
                                var detToDel = _promotionalOfferDetailRepository.GetById(offerDetail.Id);
                                _promotionalOfferDetailRepository.Delete(detToDel);
                            }
                        }
                    }
                    //Add offer detail list - new offer details
                    if (offerDetailList != null && offerDetailList.Count > 0)
                    {
                        _promotionalOfferDetailRepository.AddEntityList(offerDetailList);
                    }
                    _promotionalOfferDetailRepository.SaveChanges();

                    try
                    {
                        //_unitOfWork.Commit();
                        _promotionalOfferRepository.Commit(dbContextTransaction);
                    }
                    catch (Exception ex)
                    {
                        objOperation.Success = false;
                        throw ex;
                    }
                }
                catch (Exception ex)
                {
                    _promotionalOfferRepository.Rollback(dbContextTransaction);
                }
            }
            return objOperation;
        }