public async Task <IActionResult> RegisterMaintenanceJob([FromForm] WorkshopManagementNewViewModel inputModel) { if (ModelState.IsValid) { return(await ExecuteWithFallback(async() => { try { string dateStr = inputModel.Date.ToString("yyyy-MM-dd"); // get or create planning for date var planning = await _workshopManagementAPI.GetWorkshopPlanning(dateStr); if (planning == null) { // create planning for date await _workshopManagementAPI.RegisterPlanning(dateStr); } // register maintenance job DateTime startTime = inputModel.Date.Add(inputModel.StartTime.TimeOfDay); DateTime endTime = inputModel.Date.Add(inputModel.EndTime.TimeOfDay); Vehicle vehicle = await _workshopManagementAPI.GetVehicleByLicenseNumber(inputModel.SelectedVehicleLicenseNumber); Customer customer = await _workshopManagementAPI.GetCustomerById(vehicle.OwnerId); PlanMaintenanceJob cmd = new PlanMaintenanceJob(Guid.NewGuid(), Guid.NewGuid(), startTime, endTime, (customer.CustomerId, customer.Name, customer.TelephoneNumber), (vehicle.LicenseNumber, vehicle.Brand, vehicle.Type), inputModel.Description); await _workshopManagementAPI.PlanMaintenanceJob(dateStr, cmd); } catch (ApiException ex) { if (ex.StatusCode == HttpStatusCode.Conflict) { // add errormessage from API exception to model var content = ex.GetContentAs <BusinessRuleViolation>(); inputModel.Error = content.ErrorMessage; // repopulate list of available vehicles in the model inputModel.Vehicles = await GetAvailableVehiclesList(); // back to New view return View("New", inputModel); } } return RedirectToAction("Index", new { date = inputModel.Date }); })); } else { inputModel.Vehicles = await GetAvailableVehiclesList(); return(View("New", inputModel)); } }
public async Task <IActionResult> RegisterMaintenanceJob([FromForm] WorkshopManagementNewViewModel inputModel) { if (ModelState.IsValid) { return(await _resiliencyHelper.ExecuteResilient(async() => { string dateStr = inputModel.Date.ToString("yyyy-MM-dd"); try { // register maintenance job DateTime startTime = inputModel.Date.Add(inputModel.StartTime.TimeOfDay); DateTime endTime = inputModel.Date.Add(inputModel.EndTime.TimeOfDay); Vehicle vehicle = await _workshopManagementAPI.GetVehicleByLicenseNumber(inputModel.SelectedVehicleLicenseNumber); // Customer customer = await _workshopManagementAPI.GetCustomerById(vehicle.CustomerId); PlanMaintenanceJob planMaintenanceJobCommand = new PlanMaintenanceJob(Guid.NewGuid(), Guid.NewGuid(), startTime, endTime, //(customer.CustomerId, customer.Nombre, customer.Telefono), (vehicle.Codigo, vehicle.Matricula, vehicle.Marca), inputModel.Description); await _workshopManagementAPI.PlanMaintenanceJob(dateStr, planMaintenanceJobCommand); } catch (ApiException ex) { if (ex.StatusCode == HttpStatusCode.Conflict) { // add errormessage from API exception to model var content = ex.GetContentAs <BusinessRuleViolation>(); inputModel.Error = content.ErrorMessage; // repopulate list of available vehicles in the model inputModel.Vehicles = await GetAvailableVehiclesList(); // back to New view return View("New", inputModel); } } return RedirectToAction("Index", new { planningDate = dateStr }); }, View("Offline", new WorkshopManagementOfflineViewModel()))); } else { inputModel.Vehicles = await GetAvailableVehiclesList(); return(View("New", inputModel)); } }
public async Task <IActionResult> New(DateTime planningDate) { return(await _resiliencyHelper.ExecuteResilient(async() => { DateTime startTime = planningDate.Date.AddHours(8); var model = new WorkshopManagementNewViewModel { Id = Guid.NewGuid(), Date = planningDate, StartTime = startTime, EndTime = startTime.AddHours(2), Vehicles = await GetAvailableVehiclesList() }; return View(model); }, View("Offline", new WorkshopManagementOfflineViewModel()))); }
public async Task <IActionResult> New(DateTime date) { return(await ExecuteWithFallback(async() => { DateTime startTime = date.Date.AddHours(8); var model = new WorkshopManagementNewViewModel { Id = Guid.NewGuid(), Date = date, StartTime = startTime, EndTime = startTime.AddHours(2), Vehicles = await GetAvailableVehiclesList() }; return View(model); })); }