/// <summary>
        /// Function for add voucher
        /// </summary>
        /// <param name="voucherSetup_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Add(VoucherSetup_VM voucherSetup_VM, int loginUserId)
        {
            var ret = 1;

            using (var dbcxtransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var voucherSetup = new VoucherSetup();
                    voucherSetup.Name                = voucherSetup_VM.Name;
                    voucherSetup.Description         = voucherSetup_VM.Description;
                    voucherSetup.Terms               = voucherSetup_VM.Terms;
                    voucherSetup.Limitations         = voucherSetup_VM.Limitations;
                    voucherSetup.Type                = voucherSetup_VM.Type;
                    voucherSetup.Value               = voucherSetup_VM.Value;
                    voucherSetup.IsMultipleTimeUsage = voucherSetup_VM.IsMultipleTimeUsage;
                    voucherSetup.StartDate           = voucherSetup_VM.StartDate;
                    voucherSetup.EndDate             = voucherSetup_VM.EndDate;
                    voucherSetup.Status              = voucherSetup_VM.Status;
                    voucherSetup.CreatedOn           = DateTime.Now;
                    voucherSetup.CreatedBy           = loginUserId;
                    _context.VoucherSetup.Add(voucherSetup);
                    _context.SaveChanges();

                    //Add voucher stores
                    var voucherStores = new List <Set_VoucherStore>();
                    foreach (var storeId in voucherSetup_VM.StoreIds)
                    {
                        var obj = new Set_VoucherStore();
                        obj.VoucherId = voucherSetup.Id;
                        obj.StoreId   = storeId;
                        voucherStores.Add(obj);
                    }

                    _context.Set_VoucherStore.AddRange(voucherStores);
                    _context.SaveChanges();

                    if (voucherSetup_VM.Type == (int)VoucherSetupType.ItemType)
                    {
                        //Add voucher menu item
                        var voucherItemTypes = new List <VoucherItemType>();
                        foreach (var menuItemId in voucherSetup_VM.MenuItemIds)
                        {
                            var obj = new VoucherItemType();
                            obj.VoucherId  = voucherSetup.Id;
                            obj.MenuItemId = menuItemId;
                            voucherItemTypes.Add(obj);
                        }
                        _context.VoucherItemType.AddRange(voucherItemTypes);
                        _context.SaveChanges();
                    }

                    //Add voucher survey
                    var voucherSurveys = new List <Set_VoucherSurvey>();
                    foreach (var surveyId in voucherSetup_VM.SurveyIds)
                    {
                        var obj = new Set_VoucherSurvey();
                        obj.VoucherId = voucherSetup.Id;
                        obj.SurveyId  = surveyId;
                        voucherSurveys.Add(obj);
                    }
                    _context.Set_VoucherSurvey.AddRange(voucherSurveys);
                    _context.SaveChanges();

                    dbcxtransaction.Commit();
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();
                    ret = 0;
                }
            }
            return(ret);
        }
        /// <summary>
        /// Function for update voucher
        /// </summary>
        /// <param name="voucherSetup_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Update(VoucherSetup_VM voucherSetup_VM, int loginUserId)
        {
            var ret = 1;

            using (var dbcxtransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var voucherSetup = _context.VoucherSetup.Where(x => x.Id == voucherSetup_VM.Id && x.IsDeleted == false && x.CreatedBy == loginUserId).FirstOrDefault();
                    if (voucherSetup != null)
                    {
                        voucherSetup.Name                = voucherSetup_VM.Name;
                        voucherSetup.Description         = voucherSetup_VM.Description;
                        voucherSetup.Terms               = voucherSetup_VM.Terms;
                        voucherSetup.Limitations         = voucherSetup_VM.Limitations;
                        voucherSetup.Type                = voucherSetup_VM.Type;
                        voucherSetup.Value               = voucherSetup_VM.Value;
                        voucherSetup.IsMultipleTimeUsage = voucherSetup_VM.IsMultipleTimeUsage;
                        voucherSetup.StartDate           = voucherSetup_VM.StartDate;
                        voucherSetup.EndDate             = voucherSetup_VM.EndDate;
                        voucherSetup.Status              = voucherSetup_VM.Status;
                        voucherSetup.ModifiedOn          = DateTime.Now;
                        voucherSetup.ModifiedBy          = loginUserId;
                        _context.SaveChanges();

                        //Remove old voucher stores
                        var oldVoucherStores = _context.Set_VoucherStore.Where(x => x.VoucherId == voucherSetup.Id).ToList();
                        if (oldVoucherStores.Any())
                        {
                            _context.Set_VoucherStore.RemoveRange(oldVoucherStores);
                            _context.SaveChanges();
                        }

                        //Remove old voucher menu item
                        var oldVoucherItemTypess = _context.VoucherItemType.Where(x => x.VoucherId == voucherSetup.Id).ToList();
                        if (oldVoucherItemTypess.Any())
                        {
                            _context.VoucherItemType.RemoveRange(oldVoucherItemTypess);
                            _context.SaveChanges();
                        }

                        //Remove old voucher survey
                        var oldVoucherSurvey = _context.Set_VoucherSurvey.Where(x => x.VoucherId == voucherSetup.Id).ToList();
                        if (oldVoucherSurvey.Any())
                        {
                            _context.Set_VoucherSurvey.RemoveRange(oldVoucherSurvey);
                            _context.SaveChanges();
                        }


                        //Add voucher stores
                        var voucherStores = new List <Set_VoucherStore>();
                        foreach (var storeId in voucherSetup_VM.StoreIds)
                        {
                            var obj = new Set_VoucherStore();
                            obj.VoucherId = voucherSetup.Id;
                            obj.StoreId   = storeId;
                            voucherStores.Add(obj);
                        }

                        _context.Set_VoucherStore.AddRange(voucherStores);
                        _context.SaveChanges();

                        if (voucherSetup_VM.Type == (int)VoucherSetupType.ItemType)
                        {
                            //Add voucher menu item
                            var voucherItemTypes = new List <VoucherItemType>();
                            foreach (var menuItemId in voucherSetup_VM.MenuItemIds)
                            {
                                var obj = new VoucherItemType();
                                obj.VoucherId  = voucherSetup.Id;
                                obj.MenuItemId = menuItemId;
                                voucherItemTypes.Add(obj);
                            }
                            _context.VoucherItemType.AddRange(voucherItemTypes);
                            _context.SaveChanges();
                        }

                        //Add voucher survey
                        var voucherSurveys = new List <Set_VoucherSurvey>();
                        foreach (var surveyId in voucherSetup_VM.SurveyIds)
                        {
                            var obj = new Set_VoucherSurvey();
                            obj.VoucherId = voucherSetup.Id;
                            obj.SurveyId  = surveyId;
                            voucherSurveys.Add(obj);
                        }
                        _context.Set_VoucherSurvey.AddRange(voucherSurveys);
                        _context.SaveChanges();

                        dbcxtransaction.Commit();
                    }
                    else
                    {
                        ret = 0;
                    }
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();
                    ret = 0;
                }
            }
            return(ret);
        }