Example #1
0
 public override Result <EmergencyHistoryModel> Find(IFilter filter)
 {
     try
     {
         EmergencyHistory      emergencyHistory      = _emergencyHistoryDAL.Find((EmergencyHistoryFilter)filter);
         EmergencyHistoryModel emergencyHistoryModel = _mapper.Map <EmergencyHistoryModel>(emergencyHistory);
         return(Result <EmergencyHistoryModel> .BuildSuccess(emergencyHistoryModel));
     }
     catch (Exception error)
     {
         return(Result <EmergencyHistoryModel> .BuildError("Erro ao localizar o histórico da ocorrência.", error));
     }
 }
Example #2
0
        public override Result <Emergency> Update(EmergencyModel model)
        {
            try
            {
                //lógica para remover pacientes vazios
                var patientsRemove = model.PatientModels.Where
                                     (
                    d => d.Age == 0 &&
                    d.Gender == Entities.Enums.Gender.Invalido &&
                    string.IsNullOrWhiteSpace(d.Name) &&
                    d.Id == 0
                                     ).ToList();
                patientsRemove.ForEach(d => model.PatientModels.Remove(d));

                Emergency emergency = _mapper.Map <Emergency>(model);

                var history = _emergencyHistoryDAL
                              .Find(new EmergencyHistoryFilter {
                    EmergencyId = emergency.Id, EmergencyStatus = EmergencyStatus.InEvaluation
                });

                if (history == null)
                {
                    if (emergency.EmergencyHistories == null)
                    {
                        emergency.EmergencyHistories = new List <EmergencyHistory>();
                    }

                    emergency.EmergencyHistories.Add(new EmergencyHistory
                    {
                        Date            = DateTime.Now,
                        Description     = "Ocorrência em Avaliação",
                        Emergency       = emergency,
                        EmergencyStatus = emergency.EmergencyStatus,
                        EmployeeGuid    = model.EmployeeGuid
                    });
                }

                if ((model?.AddressModel?.Id ?? 0) == 0)
                {
                    var resultAddress = _addressBLL.Register(model.AddressModel);
                    if (!resultAddress.Success)
                    {
                        return(Result <Emergency> .BuildError(resultAddress.Messages));
                    }
                    emergency.Address = resultAddress.Model;
                }
                else
                {
                    var resultAddress = _addressValidation.Validate(emergency.Address);
                    if (!resultAddress.Success)
                    {
                        return(Result <Emergency> .BuildError(resultAddress.Messages));
                    }
                }

                foreach (var patientModel in model.PatientModels)
                {
                    if ((patientModel?.Id ?? 0) == 0)
                    {
                        patientModel.EmergencyId = emergency.Id;
                        var resultPatient = _patientBLL.Register(patientModel);
                        if (!resultPatient.Success)
                        {
                            return(Result <Emergency> .BuildError(resultPatient.Messages));
                        }
                    }
                    else
                    {
                        var patient = emergency.Patients.FirstOrDefault(d => d.Id == patientModel.Id);
                        patient.EmergencyId = emergency.Id;
                        var resultPatient = _patientValidation.Validate(patient);
                        if (!resultPatient.Success)
                        {
                            return(Result <Emergency> .BuildError(resultPatient.Messages));
                        }
                    }
                }

                var result = _emergencyValidation.Validate(emergency);
                if (!result.Success)
                {
                    return(result);
                }

                _emergencyDAL.Update(emergency);
                var resultSave = _emergencyDAL.Save();
                if (!resultSave.Success)
                {
                    return(Result <Emergency> .BuildError(resultSave.Messages));
                }

                return(Result <Emergency> .BuildSuccess(null));
            }
            catch (Exception error)
            {
                return(Result <Emergency> .BuildError("Erro ao alterar o registro da ocorrência.", error));
            }
        }