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; } }