public async Task <IActionResult> Edit(int id, CreateEditVendorVM model) { if (id != model.ID) { return(NotFound()); } var vendor = await _vendorService.GetVendorAsync(id); if (!ValidUser(vendor.UserID)) { return(NotFound()); } if (ModelState.GetFieldValidationState("Title") == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid && ModelState.GetFieldValidationState("Address") == Microsoft.AspNetCore.Mvc.ModelBinding.ModelValidationState.Valid) { if (model.Image != null && !model.Image.ValidImage()) { ModelState.AddModelError("", _localizer["Invalid image type"]); _toastNotification.AddErrorToastMessage(_localizer["Invalid image type"]); return(View(model)); } var latLng = await MapMethods.ConvertAddressToLocationAsync(model.Address); if (latLng == null) { _toastNotification.AddErrorToastMessage(_localizer["Sorry, we can't recognize this address"]); return(View(model)); } try { vendor.Latitude = latLng.Item1; vendor.Longitude = latLng.Item2; model.SetValuesToVendor(vendor); var serviceOperatingHours = model.VendorHours; foreach (var elem in serviceOperatingHours) { if (elem.IsWorking) { if (elem.CloseTime < elem.OpenTime) { ModelState.AddModelError("", "Invalid work hours"); _toastNotification.AddErrorToastMessage("Choose appropriate working hours"); return(View(model)); } else { var workHours = new WorkHours(vendor.ID, elem.IsWorking, elem.Day, elem.OpenTime, elem.CloseTime); await _vendorService.ChangeWorkHoursAsync(workHours); } } else { var timeSpan = new TimeSpan(0); var workHours = new WorkHours(vendor.ID, elem.IsWorking, elem.Day, timeSpan, timeSpan); await _vendorService.ChangeWorkHoursAsync(workHours); } } await _vendorServiceADO.UpdateVendorAsync(vendor); _toastNotification.AddSuccessToastMessage(_localizer["Service Updated"]); return(RedirectToAction(nameof(MyVendors))); } catch (Exception ex) { ModelState.AddModelError("", ex.Message); _toastNotification.AddErrorToastMessage(ex.Message); } } return(View(model)); }