public FrmABMInsertUpdateEmpresa(Empresa empresa)
        {
            InitializeComponent();
            _abmEmpresa = false;

            insertMode = empresa == null;

            if (!insertMode)
                CurrentEmpresa = empresa;
        }
        public static Empresa UpdateCompany(Empresa company)
        {
            var param = new List<SPParameter>
                {
                    new SPParameter("ID_User", company.IdUsuario),
                    new SPParameter("Razon_Social", company.RazonSocial),
                    new SPParameter("Mail", company.Mail),
                    new SPParameter("Telefono", company.Telefono),
                    new SPParameter("Direccion", company.Direccion),
                    new SPParameter("Codigo_Postal", company.CodigoPostal),
                    new SPParameter("Ciuidad", company.Ciudad),
                    new SPParameter("CUIT", company.CUIT),
                    new SPParameter("Nombre_Contacto", company.NombreContacto),
                    new SPParameter("Fecha_Creacion", company.FechaCreacion)
                };

            var sp = new StoreProcedure(DataBaseConst.Empresa.SPUpdateCompany, param);

            company.ID = (int)sp.ExecuteNonQuery(null);

            return company;
        }
        public static Empresa InsertCompany(Empresa company, SqlTransaction transaction)
        {
            var param = new List<SPParameter>
                {
                    new SPParameter("ID_Usuario", company.IdUsuario),
                    new SPParameter("Razon_Social", company.RazonSocial),
                    new SPParameter("Mail", company.Mail),
                    new SPParameter("Telefono", company.Telefono),
                    new SPParameter("Direccion", company.Direccion),
                    new SPParameter("Codigo_Postal", company.CodigoPostal),
                    new SPParameter("Ciudad", company.Ciudad),
                    new SPParameter("CUIT", company.CUIT),
                    new SPParameter("Nombre_Contacto", company.NombreContacto),
                    new SPParameter("Fecha_Creacion", company.FechaCreacion)
                };

            var sp = (transaction != null)
                        ? new StoreProcedure(DataBaseConst.Empresa.SPInsertCompany, param, transaction)
                        : new StoreProcedure(DataBaseConst.Empresa.SPInsertCompany, param);

            company.ID = (int)sp.ExecuteScalar(transaction);

            return company;
        }
        private void LblGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                #region Validations

                var exceptionMessage = string.Empty;

                if (string.IsNullOrEmpty(TxtRazonSocial.Text))
                    exceptionMessage += "La razón social de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtMail.Text))
                    exceptionMessage += "El mail de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtTelefono.Text))
                    exceptionMessage += "El telefono de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtDireccion.Text))
                    exceptionMessage += "La dirección de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtCodigoPostal.Text))
                    exceptionMessage += "El código postal de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtCiudad.Text))
                    exceptionMessage += "La ciudad de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtCuit.Text))
                    exceptionMessage += "El CUIT de la empresa no puede ser vacío.\n";

                if (string.IsNullOrEmpty(TxtNombreContacto.Text))
                    exceptionMessage += "El nombre de contacto de la empresa no puede ser vacío.\n";

                if (!string.IsNullOrEmpty(exceptionMessage))
                    throw new Exception(exceptionMessage);

                #endregion

                if (insertMode)
                {
                    if (EmpresaPersistance.GetByBusinessName(TxtRazonSocial.Text, this.currentTransaction) != null)
                        throw new Exception("Ya existe una empresa con la razón social ingresada.");

                    if (EmpresaPersistance.GetByCUIT(TxtCuit.Text, this.currentTransaction) != null)
                        throw new Exception("Ya existe una empresa con el CUIT ingresado.");

                    #region Inserto la nueva empresa

                    var company = new Empresa();
                    company.IdUsuario = SessionManager.CurrentUser.ID;
                    company.RazonSocial = TxtRazonSocial.Text;
                    company.Mail = TxtMail.Text;
                    company.Telefono = TxtTelefono.Text;
                    company.Direccion = TxtDireccion.Text;
                    company.CodigoPostal = TxtCodigoPostal.Text;
                    company.Ciudad = TxtCiudad.Text;
                    company.CUIT = TxtCuit.Text;
                    company.NombreContacto = TxtNombreContacto.Text;
                    company.FechaCreacion = DtpFechaCreacion.Value;

                    var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar la nueva empresa?", "Atencion", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        //Si es el administrador el que hace el Alta, se genera un usuario con password temporal
                        if (insertDefaultUser)
                        {
                            var user = new Usuario();
                            user.Username = company.CUIT;
                            user.Password = SHA256Helper.Encode("temporal");
                            var userIngresado = UsuarioPersistance.InsertUserTemporal(user, this.currentTransaction);

                            company.IdUsuario = userIngresado.ID;
                            EmpresaPersistance.InsertCompany(company, this.currentTransaction);
                            this.currentTransaction.Commit();

                            var rol = RolPersistance.GetByName("Empresa");
                            RolPersistance.InsertUserRole(userIngresado, rol, null);
                        }
                        else
                        {
                            EmpresaPersistance.InsertCompany(company, this.currentTransaction);
                            this.currentTransaction.Commit();
                        }

                        MessageBox.Show("La Empresa ha sido ingresada con éxito.", "Atención!");
                        this.Hide();
                        if (!_abmEmpresa)
                        {
                            var frmHome = new FrmHome();
                            frmHome.ShowDialog();
                        }
                    }

                    #endregion
                }
                else
                {
                    var company = new Empresa();
                    company.IdUsuario = CurrentEmpresa.IdUsuario;
                    company.RazonSocial = TxtRazonSocial.Text;
                    company.Mail = TxtMail.Text;
                    company.Telefono = TxtTelefono.Text;
                    company.Direccion = TxtDireccion.Text;
                    company.CodigoPostal = TxtCodigoPostal.Text;
                    company.Ciudad = TxtCiudad.Text;
                    company.CUIT = TxtCuit.Text;
                    company.NombreContacto = TxtNombreContacto.Text;
                    company.FechaCreacion = DtpFechaCreacion.Value;

                    var dialogAnswer = MessageBox.Show("Esta seguro que quiere modificar la empresa?", "Atencion", MessageBoxButtons.YesNo);
                    if (dialogAnswer == DialogResult.Yes)
                    {
                        EmpresaPersistance.UpdateCompany(company);
                        CompleteAction = true;
                        this.Hide();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }