Ejemplo n.º 1
0
        private void Guardar()
        {
            SISTMEDEntities P = new SISTMEDEntities();

            using (var dbContextTransaction = P.Database.BeginTransaction())
                try
                {
                    P.Configuration.ValidateOnSaveEnabled = false;

                    PRO_PHPV2 _itemPHP = new PRO_PHPV2();
                    _itemPHP.tamanio_frasco = ObtieneTamanioFrasco();
                    _itemPHP.bic            = checkBic.Checked;
                    _itemPHP.gotas_minuto   = Convert.ToInt32(cboGotaHora.SelectedValue);
                    _itemPHP.ml_hora        = txtMlHora.Text == ""? 0: Convert.ToInt32(txtMlHora.Text);
                    _itemPHP.fecha_carga    = DateTime.Now;
                    _itemPHP.usr_carga      = Clases.Usuario.UsuarioLogeado.id_usuario_Logeado;
                    _itemPHP.obs            = txtObs.Text;
                    if (_suspender == 1)
                    {
                        _itemPHP.fecha_baja = _fbja;
                    }
                    _itemPHP.frasco1  = Convert.ToInt32(cboDiluyente.SelectedValue);
                    _itemPHP.frasco2  = Convert.ToInt32(cboDiluyente2.SelectedValue);
                    _itemPHP.frasco3  = Convert.ToInt32(cboDiluyente3.SelectedValue);
                    _itemPHP.frasco4  = Convert.ToInt32(cboDiluyente4.SelectedValue);
                    _itemPHP.frasco5  = Convert.ToInt32(cboDiluyente5.SelectedValue);
                    _itemPHP.frasco6  = Convert.ToInt32(cboDiluyente6.SelectedValue);
                    _itemPHP.frasco7  = Convert.ToInt32(cboDiluyente7.SelectedValue);
                    _itemPHP.frasco8  = Convert.ToInt32(cboDiluyente8.SelectedValue);
                    _itemPHP.frasco9  = Convert.ToInt32(cboDiluyente9.SelectedValue);
                    _itemPHP.frasco10 = Convert.ToInt32(cboDiluyente10.SelectedValue);

                    if (suministro_procedimiento_id != 0)
                    {
                        _itemPHP.id_php         = _phpID;
                        P.Entry(_itemPHP).State = System.Data.Entity.EntityState.Modified;
                    }
                    else
                    {
                        P.PRO_PHPV2.Add(_itemPHP);
                    }

                    if (suministro_procedimiento_id != 0)
                    {
                        P.PRO_PHPV2_ADITIVO.RemoveRange(P.PRO_PHPV2_ADITIVO.Where(a => a.id_php == _phpID));
                    }

                    foreach (Control c in groupBoxFrascos.Controls)
                    {
                        if (c is DataGridView)
                        {
                            DataGridView _tablaAditivos = (DataGridView)c;
                            if (_tablaAditivos.Rows.Count > 0)//Tiene algun aditivo
                            {
                                for (int i = 0; i < _tablaAditivos.Rows.Count; i++)
                                {
                                    PRO_PHPV2_ADITIVO _itemAditivo = new PRO_PHPV2_ADITIVO();
                                    _itemAditivo.PRO_PHPV2    = _itemPHP;
                                    _itemAditivo.id_frasco    = Convert.ToInt32(_tablaAditivos.Tag);
                                    _itemAditivo.aditivo_id   = _tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.ID].Value.ToString();
                                    _itemAditivo.aditivo_desc = _tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.ADITIVO].Value.ToString();
                                    _itemAditivo.dosis        = Convert.ToDecimal(_tablaAditivos.Rows[i].Cells[(int)Col_Aditivos.DOSIS].Value);
                                    P.PRO_PHPV2_ADITIVO.Add(_itemAditivo);
                                }
                            }
                            else //No tiene aditivos
                            {
                                PRO_PHPV2_ADITIVO _itemAditivo = new PRO_PHPV2_ADITIVO();
                                _itemAditivo.PRO_PHPV2    = _itemPHP;
                                _itemAditivo.id_frasco    = Convert.ToInt32(_tablaAditivos.Tag);
                                _itemAditivo.aditivo_id   = "S/A";
                                _itemAditivo.aditivo_desc = "";
                                _itemAditivo.dosis        = 0;
                                P.PRO_PHPV2_ADITIVO.Add(_itemAditivo);
                            }
                        }
                    }

                    PRO_SuministroDeProcedimiento _itemSP = new PRO_SuministroDeProcedimiento();
                    _itemSP.paciente_id          = Clases.Paciente.PacienteIngresado;
                    _itemSP.procedimiento_id     = procedimiento_id;
                    _itemSP.tipoProcedimiento_id = 8;
                    _itemSP.usuario_id           = Clases.Usuario.UsuarioLogeado.id_usuario_Logeado;
                    _itemSP.fechaAltaSistema     = DateTime.Now;

                    if (_suspender == 1)
                    {
                        _itemSP.fechaBaja = _fbja;
                    }

                    if (suministro_procedimiento_id == 0)
                    {
                        _itemSP.PRO_PHPV2 = _itemPHP;
                        P.PRO_SuministroDeProcedimiento.Add(_itemSP);
                    }
                    else
                    {
                        if (_suspender == 1)
                        {
                            PRO_SuministroDeProcedimiento _itemSuministro = new PRO_SuministroDeProcedimiento {
                                suministroDeProcedimiento_id = suministro_procedimiento_id, fechaBaja = _fbja
                            };
                            P.PRO_SuministroDeProcedimiento.Attach(_itemSuministro);
                            P.Entry(_itemSuministro).Property(s => s.fechaBaja).IsModified = true;
                        }
                    }

                    P.SaveChanges();
                    dbContextTransaction.Commit();
                    MetroMessageBox.Show(this, "Se guardo correctamente");
                    if (suministro_procedimiento_id != 0)
                    {
                        ActualizarIndicacion();
                    }
                    else
                    {
                        Opener.IActualiza();
                    }
                    this.Close();
                }
                catch (Exception ex)
                {
                    dbContextTransaction.Rollback();
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
        }