Exemplo n.º 1
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (_tmpProtocolcomponentList == null)
            {
                _tmpProtocolcomponentList = new List <ProtocolComponentList>();
            }

            #region Validations

            if (_mode == "New")
            {
                if (grdComponent.Selected.Rows.Count == 0)
                {
                    MessageBox.Show("Por favor seleccione un Exámen Médico para agregar al protocolo", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
            }

            //if (txtFinalPrice.Value.ToString() == "0")
            //{
            //    MessageBox.Show("Por favor escriba un precio de vta valido", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            //    return;
            //}

            if (chkIsConditional.Checked)
            {
                if (cbOperator.SelectedIndex != 0)
                {
                    if (Convert.ToInt32(txtAge.Value) == 0)
                    {
                        MessageBox.Show("Por favor ingrese una edad.", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        txtAge.Focus();
                        return;
                    }
                }
            }

            if (chkIMC.Checked)
            {
                if (Convert.ToInt32(txtMayorque.Value) == 0)
                {
                    MessageBox.Show("Por favor ingrese un valor para el I.M.C.", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    txtMayorque.Focus();
                    return;
                }
            }

            bool IsAddedComponent = _tmpProtocolcomponentList.Exists(p => p.v_ComponentId == _componentId && p.i_RecordStatus != (int)RecordStatus.EliminadoLogico);

            if (IsAddedComponent)
            {
                MessageBox.Show("Por favor seleccione otro Exámen Médico. ya existe", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #endregion

            OperationResult objOperationResult = new OperationResult();

            string[] componentIdFromProtocol = _tmpProtocolcomponentList.FindAll(p => p.i_RecordStatus != (int)RecordStatus.EliminadoLogico)
                                               .Select(p => p.v_ComponentId).ToArray();

            #region En un protocolo no se debe poder agregar un Componente que tenga un campo, que se repite en otro componente del mismo protocolo.

            // Verificar si el componente actual a agregar tiene campos ya existentes en el mismo protocolo.
            bool IsExists = _protocolBL.IsExistscomponentfieldsInCurrentProtocol(ref objOperationResult, componentIdFromProtocol, _componentId);

            if (IsExists)
            {
                var msj = string.Format("El examen ({0}) no se puede agregar porqué tiene un campo que se repite en otro componente del mismo protocolo.", lblExamenSeleccionado.Text);
                MessageBox.Show(msj, "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #endregion

            #region En un protocolo No se debe permitir agregar un Componente que tenga un campo formula que depende de otr componente que NO está en mismo protocolo. Si esto ocurre debe decir indicar lo siguiente: "El campo formula XXXXX depende de los campos YYY, ZZZZ que están en los componentes LLLLLL, y MMMMMM. Por favor agrege previamente los componentes LLLL y MMMM al protocolo.

            SiNo IsExists__ = _protocolBL.IsExistsFormula(ref objOperationResult, componentIdFromProtocol, _componentId);

            if (IsExists__ == SiNo.NO)
            {
                MessageBox.Show(objOperationResult.ReturnValue, "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #endregion

            string opera  = string.Empty;
            string gender = string.Empty;
            int?   age    = 0;

            if (chkIsConditional.Checked)
            {
                opera  = cbOperator.SelectedIndex != 0 ? cbOperator.Text : string.Empty;
                gender = cbGender.Text;
                age    = Convert.ToInt32(txtAge.Value);
            }
            else
            {
                gender = "AMBOS";
            }

            if (_mode == "New")
            {
                var findResult = _tmpProtocolcomponentList.Find(p => p.v_ComponentId == _componentId);

                _protocolcomponent = new ProtocolComponentList();

                if (findResult == null)   // agregar con normalidad  a la bolsa de examenes del protocolo
                {
                    _protocolcomponent.v_ProtocolComponentId = Guid.NewGuid().ToString();
                    _protocolcomponent.v_ComponentId         = _componentId;
                    _protocolcomponent.v_ComponentName       = grdComponent.Selected.Rows[0].Cells[1].Value.ToString();
                    _protocolcomponent.r_Price    = float.Parse(txtFinalPrice.Value.ToString());
                    _protocolcomponent.v_Operator = opera;
                    _protocolcomponent.i_Age      = age;
                    _protocolcomponent.v_Gender   = gender;

                    _protocolcomponent.i_IsConditionalIMC = chkIMC.Checked == true ? 1 : 0;
                    _protocolcomponent.r_Imc = decimal.Parse(txtMayorque.Value.ToString());

                    _protocolcomponent.i_IsConditionalId   = Convert.ToInt32(chkIsConditional.Checked);
                    _protocolcomponent.v_IsConditional     = chkIsConditional.Checked ? "Si" : "No";
                    _protocolcomponent.i_OperatorId        = Convert.ToInt32(cbOperator.SelectedValue);
                    _protocolcomponent.i_GenderId          = Convert.ToInt32(cbGender.SelectedValue);
                    _protocolcomponent.i_RecordStatus      = (int)RecordStatus.Agregado;
                    _protocolcomponent.v_ComponentTypeName = grdComponent.Selected.Rows[0].Cells["v_ComponentTypeName"].Value.ToString();
                    _protocolcomponent.i_RecordType        = (int)RecordType.Temporal;

                    _tmpProtocolcomponentList.Add(_protocolcomponent);
                }
                else    // El examen ya esta agregado en la bolsa hay que actualizar su estado
                {
                    if (findResult.i_RecordStatus == (int)RecordStatus.EliminadoLogico)
                    {
                        if (findResult.i_RecordType == (int)RecordType.NoTemporal)   // El registro Tiene in ID de BD
                        {
                            findResult.r_Price    = float.Parse(txtFinalPrice.Value.ToString());
                            findResult.v_Operator = opera;
                            findResult.i_Age      = age;
                            findResult.v_Gender   = gender;

                            _protocolcomponent.i_IsConditionalIMC = chkIMC.Checked == true ? 1 : 0;
                            _protocolcomponent.r_Imc = decimal.Parse(txtMayorque.Value.ToString());

                            findResult.i_IsConditionalId   = Convert.ToInt32(chkIsConditional.Checked);
                            findResult.v_IsConditional     = chkIsConditional.Checked ? "Si" : "No";
                            findResult.i_OperatorId        = Convert.ToInt32(cbOperator.SelectedValue);
                            findResult.i_GenderId          = Convert.ToInt32(cbGender.SelectedValue);
                            findResult.v_ComponentTypeName = grdComponent.Selected.Rows[0].Cells["v_ComponentTypeName"].Value.ToString();
                            findResult.i_RecordStatus      = (int)RecordStatus.Grabado;
                        }
                        else if (findResult.i_RecordType == (int)RecordType.Temporal)   // El registro tiene un ID temporal [GUID]
                        {
                            findResult.r_Price    = float.Parse(txtFinalPrice.Value.ToString());
                            findResult.v_Operator = opera;
                            findResult.i_Age      = age;
                            findResult.v_Gender   = gender;

                            _protocolcomponent.i_IsConditionalIMC = chkIMC.Checked == true ? 1 : 0;
                            _protocolcomponent.r_Imc = decimal.Parse(txtMayorque.Value.ToString());

                            findResult.i_IsConditionalId   = Convert.ToInt32(chkIsConditional.Checked);
                            findResult.v_IsConditional     = chkIsConditional.Checked ? "Si" : "No";
                            findResult.i_OperatorId        = Convert.ToInt32(cbOperator.SelectedValue);
                            findResult.i_GenderId          = Convert.ToInt32(cbGender.SelectedValue);
                            findResult.v_ComponentTypeName = grdComponent.Selected.Rows[0].Cells["v_ComponentTypeName"].Value.ToString();
                            findResult.i_RecordStatus      = (int)RecordStatus.Agregado;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Por favor seleccione otro Exámen Médico. ya existe", "Error de validación", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                }
            }
            else if (_mode == "Edit")
            {
                var findResult = _tmpProtocolcomponentList.Find(p => p.v_ProtocolComponentId == _id);

                findResult.r_Price    = float.Parse(txtFinalPrice.Value.ToString());
                findResult.v_Operator = opera;
                findResult.i_Age      = age;
                findResult.v_Gender   = gender;

                findResult.i_IsConditionalIMC = chkIMC.Checked == true ? 1 : 0;
                if (txtMayorque.Value == null)
                {
                    txtMayorque.Value = 0;
                }
                findResult.r_Imc = decimal.Parse(txtMayorque.Value.ToString());


                findResult.i_IsConditionalId = Convert.ToInt32(chkIsConditional.Checked);
                findResult.v_IsConditional   = chkIsConditional.Checked ? "Si" : "No";
                findResult.i_OperatorId      = Convert.ToInt32(cbOperator.SelectedValue);
                findResult.i_GenderId        = Convert.ToInt32(cbGender.SelectedValue);
                findResult.i_RecordStatus    = (int)RecordStatus.Modificado;
            }

            this.Close();
        }