public async Task <IActionResult> PlanMaintenanceJobAsync(DateTime planningDate, [FromBody] PlanMaintenanceJob command)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        // handle command
                        WorkshopPlanning planning = await
                                                    _planMaintenanceJobCommandHandler.HandleCommandAsync(planningDate, command);

                        // handle result
                        if (planning == null)
                        {
                            return(NotFound());
                        }

                        // return result
                        return(CreatedAtRoute("GetByDate", new { planningDate = planning.Id }, planning.MapToDTO()));
                    }
                    catch (BusinessRuleViolationException ex)
                    {
                        return(StatusCode(StatusCodes.Status409Conflict, new BusinessRuleViolation {
                            ErrorMessage = ex.Message
                        }));
                    }
                }
                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", errorMessage);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
Beispiel #2
0
        public async Task <IActionResult> PlanMaintenanceJobAsync(DateTime calendarDate, [FromBody] PlanMaintenanceJob command)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        // handle command
                        var plannedSuccessfully = await _planMaintenanceJobCommandHandler.HandleCommandAsync(calendarDate, command);

                        // handle result
                        if (!plannedSuccessfully)
                        {
                            return(NotFound());
                        }

                        // return result
                        return(Ok(plannedSuccessfully));
                    }
                    catch (BusinessRuleViolationException ex)
                    {
                        return(StatusCode(StatusCodes.Status409Conflict, new ViolationModel {
                            ErrorMessage = ex.Message
                        }));
                    }
                }
                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", errorMessage);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }