public async Task <IActionResult> EditSchedule(int?id)
        {
            var userName = this.User.Identity.Name;

            var user = await _userHelper.GetUserByEmailAsync(userName);


            if (user.IsActive == false)
            {
                return(RedirectToAction("EditUser", "Accounts"));
            }

            if (id == null)
            {
                return(NotFound());
            }

            var activeScheduleId = id.Value;

            var result = await _activeScheduleRepository.ExistsAsync(activeScheduleId);

            if (!result)
            {
                return(View());
            }

            var scheduleDetail = await _scheduleDetailRepository.GetScheduleDetailAsync(activeScheduleId);



            var list = await GetDisabledDaysAsync(scheduleDetail.ActiveSchedule.Services.Id, scheduleDetail.Dealership.Id);

            var services = _servicesSuppliedRepository.GetWithServicesByDealershipId(scheduleDetail.Dealership.Id);

            var model = _converterHelper.ToEditScheduleViewModel(scheduleDetail, services);

            var days = Newtonsoft.Json.JsonConvert.SerializeObject(list);

            model.DaysToDisable    = days;
            model.ActiveScheduleId = activeScheduleId;

            return(View(model));
        }
        public async Task <IActionResult> Edit(Dealership dealership)
        {
            if (ModelState.IsValid)
            {
                var dShip = await _dealershipRepository.GetByIdAsync(dealership.Id);

                if (dealership.IsActive == true)
                {
                    try
                    {
                        var services = await _serviceRepository.GetAllServicesAsync();


                        foreach (var item in services)
                        {
                            await _servicesSuppliedRepository.AddServicesToDealershipAsync(item, dShip);
                        }


                        var departments = await _departmentRepository.GetDepartments();

                        foreach (var item in departments)
                        {
                            await _dealershipDepartmentRepository.AddDepartmentToDealershipAsync(item, dShip);
                        }

                        dShip.IsActive   = true;
                        dShip.UpdateDate = DateTime.Now;


                        var zipcode = await _zipCodeRepository.GetByIdAsync(dealership.ZipCodeId);

                        dShip.ZipCode = zipcode;
                        await _dealershipRepository.UpdateAsync(dShip);
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        if (!await _dealershipRepository.ExistsAsync(dealership.Id))
                        {
                            return(NotFound());
                        }
                        else
                        {
                            throw;
                        }
                    }
                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    try
                    {
                        var departments = _dealershipDepartmentRepository.GetDealershipDepartments(dShip.Id);

                        await _dealershipDepartmentRepository.DeleteDEalershipDepartmentsAsync(departments);

                        var services = _servicesSuppliedRepository.GetWithServicesByDealershipId(dShip.Id);

                        await _dealershipServiceRepository.DeleteServicesFromDealershipAsync(services);


                        dShip.IsActive        = false;
                        dealership.UpdateDate = DateTime.Now;


                        var zipcode = await _zipCodeRepository.GetByIdAsync(dShip.ZipCodeId);

                        dShip.ZipCode = zipcode;
                        await _dealershipRepository.UpdateAsync(dShip);

                        return(RedirectToAction("Index"));
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        if (!await _dealershipRepository.ExistsAsync(dealership.Id))
                        {
                            return(NotFound());
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            }
            return(View(dealership));
        }