Ejemplo n.º 1
0
        public Models.PerfilesEdicion obtenerPerfilesEdicionUsuario(System.Security.Principal.IPrincipal User, bool soyLider, int ta201_idsubareapreventa)
        {
            OpenDbConn();

            Models.PerfilesEdicion oPE = new Models.PerfilesEdicion();

            //ficepi
            oPE.idficepi = int.Parse(HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"].ToString());

            //Lider
            oPE.soyLider = soyLider;

            //Administrador
            if (User.IsInRole("A") || User.IsInRole("SA"))
            {
                oPE.soyAdministrador = true;
            }

            //Super editor
            if (oPE.soyAdministrador || oPE.soyLider)
            {
                oPE.soySuperEditor = true;
            }

            //Figura área
            if (User.IsInRole("RAPREV") || User.IsInRole("DAPREV") || User.IsInRole("CAPREV") || User.IsInRole("IAPREV"))
            {
                oPE.soyFiguraArea = true;
            }

            //Figura subárea
            if (User.IsInRole("RSAPREV") || User.IsInRole("DSAPREV") || User.IsInRole("CSAPREV"))
            {
                oPE.soyFiguraSubarea = true;
            }

            //Figura subarea actual y posible lider
            DAL.SubareaPreventa    cSubarea = new DAL.SubareaPreventa(cDblib);
            Models.SubareaPreventa oSubarea = cSubarea.Select(ta201_idsubareapreventa);

            if (oSubarea != null && oSubarea.t001_idficepi_responsable == oPE.idficepi)
            {
                oPE.soyFiguraSubareaActual = true;
            }

            DAL.FiguraSubareaPreventa           cFSP   = new DAL.FiguraSubareaPreventa(cDblib);
            List <Models.FiguraSubareaPreventa> lstFSP = cFSP.ObtenerFigurasSubareaUsuario(ta201_idsubareapreventa, oPE.idficepi);

            foreach (Models.FiguraSubareaPreventa o in lstFSP)
            {
                if (o.ta203_figura == "L")
                {
                    oPE.soyPosibleLider = true;
                }
                else
                {
                    oPE.soyFiguraSubareaActual = true;
                }
            }

            //Figura area actual
            if (oSubarea != null)
            {
                DAL.AreaPreventa    cArea = new DAL.AreaPreventa(cDblib);
                Models.AreaPreventa oArea = cArea.Select(oSubarea.ta200_idareapreventa);

                if (oArea != null && oArea.t001_idficepi_responsable == oPE.idficepi)
                {
                    oPE.soyFiguraAreaActual = true;
                }

                DAL.FiguraAreaPreventa           cFAP   = new DAL.FiguraAreaPreventa(cDblib);
                List <Models.FiguraAreaPreventa> lstFAP = cFAP.ObtenerFigurasAreaUsuario(oArea.ta200_idareapreventa, oPE.idficepi);

                if (lstFAP.Count > 0)
                {
                    oPE.soyFiguraAreaActual = true;
                }
            }

            //comercial
            if (User.IsInRole("COMS"))
            {
                oPE.soyComercial = true;
            }

            return(oPE);
        }
        /// <summary>
        /// Grabar la tarea.
        /// </summary>
        /// <param name="oTareaPreventa"></param>
        /// <returns></returns>
        public int grabarTarea(Models.TareaPreventa oTareaPreventa, List <Models.ParticipanteTareaPreventa> listaParticipantes, string modoPantalla, string estadoParticipacion, Models.PerfilesEdicion oPerfilesEdicion)
        {
            Guid methodOwnerID = new Guid("5691cbfc-453f-465f-ad89-153b1e278a81");
            int  t001_idficepi_ultmodificador = int.Parse(HttpContext.Current.Session["IDFICEPI_PC_ACTUAL"].ToString());

            OpenDbConn();

            if (cDblib.Transaction.ownerID.Equals(new Guid()))
            {
                cDblib.beginTransaction(methodOwnerID);
            }

            try
            {
                DAL.TareaPreventa cTareaPreventa = new DAL.TareaPreventa(cDblib);

                DataTable dtParticipantes = new DataTable();
                dtParticipantes.Columns.Add(new DataColumn("col_1", typeof(int)));
                dtParticipantes.Columns.Add(new DataColumn("col_2", typeof(char)));


                //Recorremos la lista
                foreach (Models.ParticipanteTareaPreventa oParticipante in listaParticipantes)
                {
                    DataRow row = dtParticipantes.NewRow();
                    row["col_1"] = oParticipante.t001_idficepi_participante;
                    row["col_2"] = oParticipante.ta214_estado;

                    dtParticipantes.Rows.Add(row);
                }

                int idTareaPreventa = 0;


                //Casuísticas de perfiles edición
                if (modoPantalla == "A")//modo alta
                {
                    if (oPerfilesEdicion.soyFiguraSubarea || oPerfilesEdicion.soyAdministrador || oPerfilesEdicion.soyLider)
                    {
                        oTareaPreventa.t001_idficepi_promotor = t001_idficepi_ultmodificador;
                        idTareaPreventa = cTareaPreventa.Insert(oTareaPreventa, dtParticipantes);
                    }
                }
                else //Modo edición
                {
                    if (estadoParticipacion == "A")
                    {
                        //Update del participante (modelo reducido)
                        idTareaPreventa = cTareaPreventa.UpdateParticipante(oTareaPreventa);
                    }
                    if (oPerfilesEdicion.soyFiguraSubarea || oPerfilesEdicion.soyAdministrador || oPerfilesEdicion.soyLider)
                    {
                        //Hacer update del modelo completo
                        idTareaPreventa = cTareaPreventa.Update(oTareaPreventa, dtParticipantes, t001_idficepi_ultmodificador);
                    }
                }

                //Finalizar transacción
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.commitTransaction(methodOwnerID);
                }

                return(idTareaPreventa);
            }
            catch (Exception ex)
            {
                //rollback
                if (cDblib.Transaction.ownerID.Equals(methodOwnerID))
                {
                    cDblib.rollbackTransaction(methodOwnerID);
                }

                throw ex;
            }
        }