示例#1
0
        private void ProcesarAgendas(PersonaEditModel editModel, Profesional personaProfesional)
        {
            var session = SessionFactory.GetCurrentSession();
            //Veo el tema de las agendas
            if (editModel.Profesional.Agendas == null || !editModel.Profesional.Agendas.Any())
            {
                personaProfesional.Agendas.Clear();
            }
            else
            {
                //Agendas a eliminar
                var agendasAEliminar =
                    personaProfesional.Agendas.Where(m => !editModel.Profesional.Agendas.Select(x => x.Id).Contains(m.Id)).ToList();
                foreach (var agenda in agendasAEliminar)
                {
                    personaProfesional.QuitarAgenda(agenda);
                }
                //Agendas a agregar
                var agendasAAgregar = editModel.Profesional.Agendas.Where(x => !x.Id.HasValue);
                foreach (var agendaEditModel in agendasAAgregar)
                {
                    var agendaModel = _mappingEngine.Map<Agenda>(agendaEditModel);

                    if (agendaEditModel.EspecialidadesSeleccionadas != null)
                    {
                        foreach (var especialidadId in agendaEditModel.EspecialidadesSeleccionadas)
                        {
                            var especialidad = session.Load<Especialidad>(especialidadId);
                            agendaModel.AgregarEspecialidad(especialidad);
                        }
                    }
                    agendaModel.Consultorio = session.Load<Consultorio>(agendaEditModel.ConsultorioId);

                    personaProfesional.AgregarAgenda(agendaModel);
                }
                //Agendas a actualizar
                var agendasActualizar =
                    personaProfesional.Agendas.Where(m => editModel.Profesional.Agendas.Select(x => x.Id).Contains(m.Id)).ToList();
                foreach (var agenda in agendasActualizar)
                {
                    var agendaEditModel = editModel.Profesional.Agendas.Single(v => v.Id == agenda.Id);
                    _mappingEngine.Map(agendaEditModel, agenda);
                    ProcesarEspecialidades(agendaEditModel, agenda);
                    agenda.Consultorio = session.Load<Consultorio>(agendaEditModel.ConsultorioId);
                }
            }

            //Limpio el cache de turnos, para que procese a partir de la nueva agenda
            var query = QueryFactory.Create<IObtenerTurnosProfesionalQuery>();
            query.ProfesionalId = personaProfesional.Id;
            query.ClearCache();
        }
示例#2
0
 private void ProcesarEspecialidades(PersonaEditModel editModel, Profesional personaProfesional)
 {
     var session = SessionFactory.GetCurrentSession();
     //Especialidades a eliminar
     var especialidadesAEliminar =
         personaProfesional.Especialidades.Where(
             x => !editModel.Profesional.EspecialidadesSeleccionadas.Contains(x.Id)).ToList();
     foreach (var especialidadAEliminar in especialidadesAEliminar)
     {
         personaProfesional.QuitarEspecialidad(especialidadAEliminar);
     }
     //Especialidades a agregar
     var especialidadesAAgregar =
         editModel.Profesional.EspecialidadesSeleccionadas.Where(
             x => !personaProfesional.Especialidades.Select(p => p.Id).Contains(x)).ToList();
     foreach (var especialidadAAgregar in especialidadesAAgregar)
     {
         var especialidad = session.Load<Especialidad>(especialidadAAgregar);
         personaProfesional.AgregarEspecialidad(especialidad);
     }
 }
示例#3
0
        private void AppendLists(PersonaEditModel viewModel)
        {
            viewModel.TiposDocumentosHabilitados = GetTiposDocumentos(viewModel.TipoDocumentoId);
            viewModel.ProvinciasHabilitadas = GetProvincias(viewModel.DomicilioLocalidadProvinciaId);

            if (viewModel.DomicilioLocalidadProvinciaId.HasValue)
                viewModel.LocalidadesHabilitadas =
                    GetLocalidadesPorProvincia(viewModel.DomicilioLocalidadProvinciaId.Value, viewModel.DomicilioLocalidadId);

            //Paciente
            viewModel.Paciente.ObrasSocialesHabilitadas = GetObrasSociales(viewModel.Paciente.ObraSocialId);
            if (viewModel.Paciente.ObraSocialId.HasValue)
                viewModel.Paciente.PlanesObraSocialHabilitados =
                    GetPlanesPorObraSocial(viewModel.Paciente.ObraSocialId.Value, viewModel.Paciente.PlanId);

            //Profesional
            viewModel.Profesional.Especialidades = GetEspecialidades(viewModel.Profesional.EspecialidadesSeleccionadas);
            if (viewModel.Profesional.Agendas != null)
            {
                foreach (var agenda in viewModel.Profesional.Agendas)
                {
                    AppendLists(agenda);
                }
            }
        }
示例#4
0
        private void AdditionalMappings(PersonaEditModel editModel, Persona persona)
        {
            var session = SessionFactory.GetCurrentSession();
            persona.Domicilio = new Domicilio
                                    {
                                        Direccion = editModel.DomicilioDireccion,
                                        Localidad = session.Load<Localidad>(editModel.DomicilioLocalidadId)
                                    };

            if (editModel.EsPaciente && editModel.Paciente.PlanId.HasValue)
            {
                persona.As<Paciente>().Plan = session.Load<Plan>(editModel.Paciente.PlanId);
            }

            if (editModel.EsProfesional)
            {
                var personaProfesional = persona.As<Profesional>();
                ProcesarEspecialidades(editModel, personaProfesional);
                ProcesarAgendas(editModel, personaProfesional);
            }
        }
示例#5
0
        public ActionResult Nuevo(PersonaEditModel editModel)
        {
            AppendLists(editModel);
            if (ModelState.IsValid)
            {
                try
                {
                    var persona = _mappingEngine.Map<Persona>(editModel);
                    AdditionalMappings(editModel, persona);
                    //Le seteo un password cualquiera, y luego envio mail para que lo resetee
                    var status = _membershipService.CreateUser(persona, editModel.Email, Guid.NewGuid().ToString());
                    if (status == MembershipStatus.USER_CREATED)
                    {
                        //Envio mail para que cargue su password
                        _membershipService.RecoverPassword(editModel.Email);
                        ShowMessages(ResponseMessage.Success());
                        return RedirectToAction("Index");
                    }

                    ModelState.AddModelError("", status.Get());
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
            }

            return View(editModel);
        }
示例#6
0
 public ActionResult Nuevo()
 {
     var viewModel = new PersonaEditModel();
     AppendLists(viewModel);
     return View(viewModel);
 }
示例#7
0
        public ActionResult Editar(PersonaEditModel editModel)
        {
            AppendLists(editModel);
            if (ModelState.IsValid)
            {
                try
                {
                    var persona = GetPersona(editModel.Id.Value);
                    if (persona == null)
                    {
                        ShowMessages(ResponseMessage.Error("No se ha encontrado el usuario."));
                        return RedirectToAction("Index");
                    }

                    _mappingEngine.Map(editModel, persona);
                    AdditionalMappings(editModel, persona);

                    ShowMessages(ResponseMessage.Success());
                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.ToString());
                }
                return View(editModel);
            }
            return View(editModel);
        }