public IActionResult Index(int Id = 0)
        {
            var store = new Store_VM();

            ViewBag.Clients      = new SelectList(_clientRepository.GetList(loginUserId).Where(x => x.Status).ToList(), "Id", "CompanyName");
            ViewBag.ConceptsList = new SelectList(_conceptsRepository.GetList(loginUserId).Where(x => x.Active && x.ClientId == 0), "Id", "ConceptName");
            ViewBag.CountryList  = new SelectList(_countryRepository.GetList().Where(x => x.Status), "CountryID", "Name");
            ViewBag.RegionList   = new SelectList(_regionRepository.GetList().Where(x => x.Status), "RegionId", "Region");

            if (Id > 0)
            {
                store = _storesRespository.Get(Id, loginUserId);
                if (store == null)
                {
                    return(RedirectToAction("List", "Stores"));
                }
                else
                {
                    ViewBag.ConceptsList = new SelectList(_conceptsRepository.GetList(loginUserId).Where(x => x.Active && x.ClientId == store.ClientId), "Id", "ConceptName");
                    ViewData["Title"]    = "Edit";
                    return(View(store));
                }
            }
            else
            {
                ViewData["Title"] = "Add";
                return(View(store));
            }
        }
 public IActionResult Save(Store_VM store_VM)
 {
     if (store_VM != null)
     {
         if (store_VM.Id > 0)
         {
             if (_storesRespository.Update(store_VM, this.loginUserId) > 0)
             {
                 TempData["Status"]  = Helper.success_code;
                 TempData["Message"] = Message.storeUpdated;
             }
             else
             {
                 TempData["Message"] = Message.storeUpdateError;
             }
         }
         else
         {
             if (_storesRespository.Add(store_VM, this.loginUserId) > 0)
             {
                 TempData["Status"]  = Helper.success_code;
                 TempData["Message"] = Message.storeAdded;
             }
             else
             {
                 TempData["Message"] = Message.storeAddedError;
             }
         }
     }
     return(RedirectToAction("List", "Stores"));
 }
        /// <summary>
        /// Function for update store
        /// </summary>
        /// <param name="store_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Update(Store_VM store_VM, int loginUserId)
        {
            var ret = 1;

            using (var dbcxtransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var store = _context.Set_Stores.Where(x => x.Id == store_VM.Id && x.IsDeleted == false).FirstOrDefault();
                    if (store != null)
                    {
                        store.StoreCode   = store_VM.StoreCode;
                        store.StoreName   = store_VM.StoreName;
                        store.Status      = store_VM.Status;
                        store.RegionId    = store_VM.RegionId;
                        store.CountryCode = store_VM.CountryCode;
                        store.ModifiedBy  = loginUserId;
                        store.ModifiedOn  = DateTime.Now;
                        store.ClientId    = store_VM.ClientId;
                        _context.SaveChanges();

                        //Remove old stores concepts
                        var oldStoresConcepts = _context.Set_StoresConcepts.Where(x => x.StoreId == store.Id).ToList();
                        if (oldStoresConcepts.Any())
                        {
                            _context.Set_StoresConcepts.RemoveRange(oldStoresConcepts);
                            _context.SaveChanges();
                        }

                        // Add Stores Concepts
                        var storesConcepts = new List <Set_StoresConcepts>();
                        foreach (var concept in store_VM.ConceptIds)
                        {
                            var obj = new Set_StoresConcepts();
                            obj.StoreId   = store.Id;
                            obj.ClientId  = store.ClientId;
                            obj.ConceptId = concept;
                            storesConcepts.Add(obj);
                        }
                        _context.Set_StoresConcepts.AddRange(storesConcepts);
                        _context.SaveChanges();
                        dbcxtransaction.Commit();
                    }
                    else
                    {
                        ret = 0;
                    }
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();
                    ret = 0;
                }
            }
            return(ret);
        }
        /// <summary>
        /// Function for add store
        /// </summary>
        /// <param name="store_VM"></param>
        /// <param name="loginUserId"></param>
        /// <returns></returns>
        public int Add(Store_VM store_VM, int loginUserId)
        {
            var ret = 1;

            using (var dbcxtransaction = _context.Database.BeginTransaction())
            {
                try
                {
                    var store = new Set_Stores();
                    store.StoreGuid   = Guid.NewGuid();
                    store.StoreCode   = store_VM.StoreCode;
                    store.StoreName   = store_VM.StoreName;
                    store.Status      = store_VM.Status;
                    store.RegionId    = store_VM.RegionId;
                    store.CountryCode = store_VM.CountryCode;
                    store.CreatedOn   = DateTime.Now;
                    store.CreatedBy   = loginUserId;
                    store.DeletedBy   = 0;
                    store.ClientId    = store_VM.ClientId;
                    _context.Set_Stores.Add(store);
                    _context.SaveChanges();

                    // Add Stores Concepts
                    var storesConcepts = new List <Set_StoresConcepts>();
                    foreach (var concept in store_VM.ConceptIds)
                    {
                        var obj = new Set_StoresConcepts();
                        obj.StoreId   = store.Id;
                        obj.ClientId  = store.ClientId;
                        obj.ConceptId = concept;
                        storesConcepts.Add(obj);
                    }
                    _context.Set_StoresConcepts.AddRange(storesConcepts);
                    _context.SaveChanges();
                    dbcxtransaction.Commit();
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();
                    ret = 0;
                }
            }
            return(ret);
        }