public async Task <IActionResult> Add([FromBody] AddEvaluationDto resource) { if (!ModelState.IsValid) { return(BadRequest(ModelState.Root.Errors)); } var state = await _service.AddEvaluationAsync(resource); if (!state.Success) { return(BadRequest(state.Error)); } return(Ok(_mapper.Map <Evaluation, AddEvaluationResponse>(state.Source))); }
//tested public async Task <Response <Evaluation> > AddEvaluationAsync(AddEvaluationDto contract) { try { if (await _repo.IsEvaluatorAsync(contract.EvaluatorId, contract.VisitId)) { return(new Response <Evaluation>("You have already made Evaluation to this Visit!")); } var visit = await _interacting.GetVisitAsync(contract.VisitId); if (!visit.Success || !_visitAssertion.AssertActivation(visit.Source)) { return(new Response <Evaluation>("Visit is not Active Or Deleted !")); } var ev = await _repo.AddEvaluationAsync(_mapper.Map <AddEvaluationDto, Evaluation>(contract)); await _medicalRepHandlers.HandleEvaluationWithMedicalRepAsync(ev, visit.Source, Interacting.Add); await _unitWork.CommitAsync(); //adding Notification var allEval = await _repo.GetEvaluationWithItsVisitAndDoctorAndRepByIdAsync(ev.Id); _eventBuilder.Init(allEval, allEval.Evaluator, allEval.Visit, allEval.Visit.Doctor); var notification = await _eventBuilder.Build(); await AddEventNotificationAsync(notification); //end of adding Notification return(new Response <Evaluation>(ev)); } catch (Exception e) { return(new Response <Evaluation>($"Error: {e.Message}")); } }