Exemplo n.º 1
0
        public JsonResult Crear(GestanteMedicamentoViewModel gestanteMedicamentos)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var result = _gestanteManager.GrabarGestanteMedicamento(gestanteMedicamentos);
                    RegistrarAccion((byte)AccionSesion.Crear, (byte)ObjetoSesion.CrearGestanteMedicamento, result);
                    return(result > 0 ? Json(new { Success = 1, GestanteMedicamentoId = result, ex = "" }) : Json(new { Success = 0, ex = new Exception("No se pudo registrar los medicamentos.").Message.ToString() }));
                }
            }
            catch (Exception ex)
            {
                // If Sucess== 0 then Unable to perform Save/Update Operation and send Exception to View as JSON
                return(Json(new { Success = 0, ex = ex.Message.ToString() }));
            }

            return(Json(new { Success = 0, ex = new Exception("No se pudo registrar los medicamentos.").Message.ToString() }));
        }
        public GestanteMedicamentoViewModel MostrarGestanteMedicamento(int id)
        {
            var gestanteMedicamento = _db.GestanteMedicamentos.Find(id);

            if (gestanteMedicamento == null)
            {
                return(null);
            }

            var gestanteMedModel = new GestanteMedicamentoViewModel
            {
                GestanteMedicamentoId = gestanteMedicamento.GestanteMedicamentoId,
                GestanteKey           = gestanteMedicamento.GestanteKey,
                EstablecimientoId     = gestanteMedicamento.EstablecimientoId,
                Fecha        = gestanteMedicamento.Fecha,
                NombreMedico = gestanteMedicamento.NombreMedico,
                GestanteDni  = gestanteMedicamento.Gestante.GestanteNroDocumento,
                Nombres      = gestanteMedicamento.Gestante.Nombres,
                APaterno     = gestanteMedicamento.Gestante.APaterno,
                AMaterno     = gestanteMedicamento.Gestante.AMaterno,
                Medicamentos = new List <GestanteMedicamentoDetalleViewModel>()
            };


            foreach (var gestanteMedDetalleModel in gestanteMedicamento.GestanteMedicamentoDetalle.Select(gdm => new GestanteMedicamentoDetalleViewModel
            {
                GestanteMedicamentoDetalleId = gdm.GestanteMedicamentoDetalleId,
                GestanteMedicamentoId = gdm.GestanteMedicamentoId,
                MedicamentoId = gdm.MedicamentoId,
                Descripcion = gdm.Medicamento.Descripcion,
                Dosis = gdm.Dosis,
                Dias = gdm.Dias,
                Cantidad = gdm.Cantidad,
                Instrucciones = gdm.Instrucciones
            }))
            {
                gestanteMedModel.Medicamentos.Add(gestanteMedDetalleModel);
            }

            return(gestanteMedModel);
        }
        public int GrabarGestanteMedicamento(GestanteMedicamentoViewModel gestanteMedicamentos)
        {
            try
            {
                var gmId = gestanteMedicamentos.GestanteMedicamentoId;

                GestanteMedicamento gestanteMed;
                if (gmId > 0)
                {
                    gestanteMed = _db.GestanteMedicamentos.FirstOrDefault(gm => gm.GestanteMedicamentoId == gmId);

                    if (gestanteMed == null)
                    {
                        return(0);
                    }

                    gestanteMed.Fecha             = gestanteMedicamentos.Fecha;
                    gestanteMed.NombreMedico      = gestanteMedicamentos.NombreMedico;
                    gestanteMed.EstablecimientoId = gestanteMedicamentos.EstablecimientoId;
                    _db.Entry(gestanteMed).State  = EntityState.Modified;

                    if (gestanteMedicamentos.Medicamentos != null && gestanteMedicamentos.Medicamentos.Any())
                    {
                        foreach (var detail in gestanteMedicamentos.Medicamentos)
                        {
                            detail.GestanteMedicamento = gestanteMedicamentos;
                            if (detail.GestanteMedicamentoDetalleId == 0)
                            {
                                var newMed = new GestanteMedicamentoDetalle()
                                {
                                    GestanteMedicamentoId = gmId,
                                    MedicamentoId         = detail.MedicamentoId,
                                    Dosis         = detail.Dosis,
                                    Dias          = detail.Dias,
                                    Cantidad      = detail.Cantidad,
                                    Instrucciones = detail.Instrucciones
                                };
                                gestanteMed.GestanteMedicamentoDetalle.Add(newMed);
                            }
                            else
                            {
                                var gesMedDetalle = _db.GestanteMedicamentoDetalle.Single(x => x.GestanteMedicamentoDetalleId == detail.GestanteMedicamentoDetalleId);
                                gesMedDetalle.MedicamentoId    = detail.MedicamentoId;
                                gesMedDetalle.Dosis            = detail.Dosis;
                                gesMedDetalle.Dias             = detail.Dias;
                                gesMedDetalle.Cantidad         = detail.Cantidad;
                                gesMedDetalle.Instrucciones    = detail.Instrucciones;
                                _db.Entry(gesMedDetalle).State = EntityState.Modified;
                            }
                        }

                        if (gestanteMed.GestanteMedicamentoDetalle != null)
                        {
                            foreach (var gmr in gestanteMed.GestanteMedicamentoDetalle.Where(x => gestanteMedicamentos.Medicamentos.All(u => u.GestanteMedicamentoDetalleId != x.GestanteMedicamentoDetalleId)).ToList())
                            {
                                _db.GestanteMedicamentoDetalle.Remove(gmr);
                            }
                        }
                    }
                    else
                    {
                        gestanteMed.GestanteMedicamentoDetalle = null;
                        var detailsToRemove = _db.GestanteMedicamentoDetalle.Where(x => x.GestanteMedicamentoId == gmId);
                        foreach (var gdm in detailsToRemove)
                        {
                            _db.GestanteMedicamentoDetalle.Remove(gdm);
                        }
                    }
                    _db.SaveChanges();
                    return(gmId);
                }

                gestanteMed = new GestanteMedicamento()
                {
                    GestanteKey       = gestanteMedicamentos.GestanteKey,
                    Fecha             = gestanteMedicamentos.Fecha,
                    NombreMedico      = gestanteMedicamentos.NombreMedico,
                    EstablecimientoId = gestanteMedicamentos.EstablecimientoId
                };

                foreach (var medicamento in gestanteMedicamentos.Medicamentos.Select(med => new GestanteMedicamentoDetalle()
                {
                    MedicamentoId = med.MedicamentoId,
                    Dosis = med.Dosis,
                    Dias = med.Dias,
                    Cantidad = med.Cantidad,
                    Instrucciones = med.Instrucciones
                }))
                {
                    gestanteMed.GestanteMedicamentoDetalle.Add(medicamento);
                }

                _db.GestanteMedicamentos.Add(gestanteMed);
                _db.SaveChanges();
                return(gestanteMed.GestanteMedicamentoId);
            }
            catch (Exception e)
            {
                return(0);
            }
        }