public IActionResult Create(ManufacturerCreateOrUpdateModel model, bool continueEditing)
        {
            bool hasError = false;

            if (ModelState.IsValid)
            {
                // check if name exist
                if (_dataHelper.CheckForDuplicate(ServiceType.Manufacturer, DataType.Name, model.Name))
                {
                    ModelState.AddModelError(string.Empty, "Manufacturer name already exist");
                    hasError = true;
                }

                // create seo friendly url if the user didn't provide
                if (string.IsNullOrEmpty(model.SeoUrl))
                {
                    model.SeoUrl = _dataHelper.GenerateSeoFriendlyUrl(ServiceType.Manufacturer, model.Name);
                }
                else
                {
                    // check if seo already exist
                    if (_dataHelper.CheckForDuplicate(ServiceType.Manufacturer, DataType.Seo, model.SeoUrl))
                    {
                        ModelState.AddModelError(string.Empty, "SEO Url already exist");
                        hasError = true;
                    }
                }

                // if everything is valid
                if (!hasError)
                {
                    // map model to entity
                    var manufacturerEntity = _mapper.Map <ManufacturerCreateOrUpdateModel, Manufacturer>(model);
                    manufacturerEntity.DateAdded    = DateTime.Now;
                    manufacturerEntity.DateModified = DateTime.Now;

                    // save
                    _manufacturerService.InsertManufacturer(manufacturerEntity);

                    if (continueEditing)
                    {
                        return(RedirectToAction("Edit", new { id = manufacturerEntity.Id, ActiveTab = model.ActiveTab }));
                    }

                    return(RedirectToAction("List"));
                }
            }

            // something went wrong, redisplay form
            return(View(model));
        }
        // GET: /Manufacturer/Create
        public IActionResult Create()
        {
            var model = new ManufacturerCreateOrUpdateModel();

            return(View(model));
        }
        public IActionResult Edit(ManufacturerCreateOrUpdateModel model, bool continueEditing)
        {
            bool hasError = false;

            if (ModelState.IsValid)
            {
                // get model from session
                var sessionModel = JsonConvert.DeserializeObject <ManufacturerCreateOrUpdateModel>(Session.GetString(_sessionKey));
                model.Id        = sessionModel.Id;
                model.DateAdded = sessionModel.DateAdded;

                // check if user edit the name
                if (model.Name.ToLower() != sessionModel.Name.ToLower())
                {
                    // check if name exist
                    if (_dataHelper.CheckForDuplicate(ServiceType.Manufacturer, DataType.Name, model.Name))
                    {
                        ModelState.AddModelError(string.Empty, "Manufacturer name already exist");
                        hasError = true;
                    }
                }

                // create seo friendly url if the user didn't provide
                if (string.IsNullOrEmpty(model.SeoUrl))
                {
                    model.SeoUrl = _dataHelper.GenerateSeoFriendlyUrl(ServiceType.Manufacturer, model.Name);
                }
                else
                {
                    // check if user change seo url
                    if (model.SeoUrl.ToLower() != sessionModel.SeoUrl.ToLower())
                    {
                        // check if seo already exist
                        if (_dataHelper.CheckForDuplicate(ServiceType.Manufacturer, DataType.Seo, model.SeoUrl))
                        {
                            ModelState.AddModelError(string.Empty, "SEO Url already exist");
                            hasError = true;
                        }
                    }
                }

                // if everything works
                if (!hasError)
                {
                    // map model to entity
                    var manufacturerEntity = _mapper.Map <ManufacturerCreateOrUpdateModel, Manufacturer>(model);
                    manufacturerEntity.DateModified = DateTime.Now;

                    // save
                    _manufacturerService.UpdateManufacturer(manufacturerEntity);

                    if (continueEditing)
                    {
                        return(RedirectToAction("Edit", new { id = manufacturerEntity.Id, ActiveTab = model.ActiveTab }));
                    }

                    return(RedirectToAction("List"));
                }
            }

            // something went wrong, redisplay form
            return(View(model));
        }