Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        //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}"));
            }
        }