public async Task <IActionResult> FinishMaintenanceJob([FromForm] WorkshopManagementFinishViewModel inputModel) { if (ModelState.IsValid) { return(await _resiliencyHelper.ExecuteResilient(async() => { string dateStr = inputModel.Date.ToString("yyyy-MM-dd"); DateTime actualStartTime = inputModel.Date.Add(inputModel.ActualStartTime.Value.TimeOfDay); DateTime actualEndTime = inputModel.Date.Add(inputModel.ActualEndTime.Value.TimeOfDay); FinishMaintenanceJob cmd = new FinishMaintenanceJob(Guid.NewGuid(), inputModel.Id, actualStartTime, actualEndTime, inputModel.Notes); await _workshopManagementAPI.FinishMaintenanceJob(dateStr, inputModel.Id.ToString("D"), cmd); return RedirectToAction("Details", new { planningDate = dateStr, jobId = inputModel.Id }); }, View("Offline", new WorkshopManagementOfflineViewModel()))); } else { return(View("Finish", inputModel)); } }
public async Task FinishMaintenanceJob(string planningDate, string jobId, FinishMaintenanceJob cmd) { await _restClient.FinishMaintenanceJob(planningDate, jobId, cmd); }
public async Task <WorkshopPlanning> HandleCommandAsync(DateTime planningDate, FinishMaintenanceJob command) { // get planning var aggregateId = WorkshopPlanningId.Create(planningDate); var planning = await _planningRepo.GetByIdAsync(aggregateId); if (planning == null) { return(null); } // handle command planning.FinishMaintenanceJob(command); // persist IEnumerable <Event> events = planning.GetEvents(); await _planningRepo.SaveAsync( planning.Id, planning.OriginalVersion, planning.Version, events); // publish event foreach (var e in events) { await _messagePublisher.PublishMessageAsync(e.MessageType, e, ""); } // return result return(planning); }
public async Task <IActionResult> FinishMaintenanceJobAsync(DateTime planningDate, Guid jobId, [FromBody] FinishMaintenanceJob command) { try { if (ModelState.IsValid) { // handle command WorkshopPlanning planning = await _finishMaintenanceJobCommandHandler.HandleCommandAsync(planningDate, command); // handle result if (planning == null) { return(NotFound()); } // return result return(Ok()); } return(BadRequest()); } catch (ConcurrencyException) { string errorMessage = "Unable to save changes. " + "Try again, and if the problem persists " + "see your system administrator."; Log.Error(errorMessage); ModelState.AddModelError("", errorMessage); return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public async Task <WorkshopPlanning> HandleCommandAsync(DateTime planningDate, FinishMaintenanceJob command) { // get planning WorkshopPlanning planning = await _planningRepo.GetWorkshopPlanningAsync(planningDate); if (planning == null) { return(null); } // handle command IEnumerable <Event> events = planning.FinishMaintenanceJob(command); // persist await _planningRepo.SaveWorkshopPlanningAsync(planning, events); // publish event foreach (var e in events) { await _messagePublisher.PublishMessageAsync(e.MessageType, e, ""); } // return result return(planning); }
public async Task FinishMaintenanceJob(string date, string jobId, FinishMaintenanceJob cmd) { await _client.FinishMaintenanceJob(date, jobId, cmd); }
public async Task <IActionResult> FinishMaintenanceJobAsync(DateTime date, Guid jobId, [FromBody] FinishMaintenanceJob command) { try { if (ModelState.IsValid) { // get planning WorkshopPlanning planning = await _planningRepo.GetWorkshopPlanningAsync(date); if (planning == null) { return(NotFound()); } // handle command IEnumerable <Event> events = planning.FinishMaintenanceJob(command); // persist await _planningRepo.SaveWorkshopPlanningAsync(planning, events); // publish event foreach (var e in events) { await _messagePublisher.PublishMessageAsync(e.MessageType, e, ""); } // return result return(Ok()); } return(BadRequest()); } catch (ConcurrencyException) { //Log the error (uncomment ex variable name and write a log. ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists " + "see your system administrator."); return(StatusCode(StatusCodes.Status500InternalServerError)); } }