public async Task <IActionResult> Create(CreateEditVendorVM model) { try { 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) { ModelState.AddModelError("", _localizer["Sorry, we can't recognize this address"]); _toastNotification.AddErrorToastMessage(_localizer["Sorry, we can't recognize this address"]); return(View(model)); } var user = await _userManager.GetUserAsync(User); user.VendorsCount++; await _userManager.UpdateAsync(user); var vendor = new Vendor(); vendor.UserID = user.Id; vendor.Latitude = latLng.Item1; vendor.Longitude = latLng.Item2; model.SetValuesToVendor(vendor); await _vendorService.CreateAsync(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"); await _vendorService.DeleteAsync(vendor); return(View(model)); } else { var workHours = new WorkHours(vendor.ID, elem.IsWorking, elem.Day, elem.OpenTime, elem.CloseTime); await _vendorService.AddWorkHoursAsync(workHours); } } else { var timeSpan = new TimeSpan(0); var workHours = new WorkHours(vendor.ID, elem.IsWorking, elem.Day, timeSpan, timeSpan); await _vendorServiceADO.InsertWorkHoursAsync(workHours); } } _toastNotification.AddSuccessToastMessage(_localizer["Service Created"]); return(RedirectToAction("MyVendors")); } } catch (Exception ex) { ModelState.AddModelError("", ex.Message); _toastNotification.AddErrorToastMessage(ex.Message); } return(View(model)); }