コード例 #1
0
ファイル: ProyectoDAO.cs プロジェクト: ppenan/SiproDesaCSharp
        public static bool calcularCostoyFechas(int proyectoId)
        {
            bool ret = false;

            try
            {
                List <List <Nodo> > listas = EstructuraProyectoDAO.getEstructuraProyectoArbolCalculos(proyectoId, null);
                for (int i = listas.Count - 1; i >= 0; i--)
                {
                    for (int j = 0; j < listas[i].Count; j++)
                    {
                        Nodo     nodo              = listas[i][j];
                        decimal  costo             = decimal.Zero;
                        DateTime fecha_maxima      = new DateTime(0);
                        DateTime fecha_minima      = new DateTime(new DateTime(2999, 12, 31, 0, 0, 0).Ticks);
                        DateTime fecha_maxima_real = default(DateTime);
                        DateTime fecha_minima_real = default(DateTime);
                        foreach (Nodo nodo_hijo in nodo.children)
                        {
                            costo            += nodo_hijo.costo;
                            fecha_minima      = (nodo_hijo.fecha_inicio < fecha_minima) ? nodo_hijo.fecha_inicio : fecha_minima;
                            fecha_maxima      = (nodo_hijo.fecha_fin > fecha_maxima) ? nodo_hijo.fecha_fin : fecha_maxima;
                            fecha_minima_real = nodo_hijo.fecha_inicio_real != null ? fecha_minima_real != null ? ((nodo_hijo.fecha_inicio_real.TimeOfDay < fecha_minima_real.TimeOfDay) ? nodo_hijo.fecha_inicio_real : fecha_minima_real) : nodo_hijo.fecha_inicio_real : fecha_minima_real != null ? fecha_minima_real : fecha_minima_real;
                            fecha_maxima_real = nodo_hijo.fecha_fin_real != null ? fecha_maxima_real != null ? ((nodo_hijo.fecha_fin_real.TimeOfDay > fecha_maxima_real.TimeOfDay) ? nodo_hijo.fecha_fin_real : fecha_maxima_real) : nodo_hijo.fecha_fin_real : fecha_maxima_real != default(DateTime) ? fecha_maxima_real : default(DateTime);
                        }
                        nodo.objeto = ObjetoDAO.getObjetoPorIdyTipo(nodo.id, nodo.objeto_tipo);
                        if (nodo.children != null && nodo.children.Count > 0)
                        {
                            nodo.fecha_inicio      = fecha_minima;
                            nodo.fecha_fin         = fecha_maxima;
                            nodo.fecha_inicio_real = fecha_minima_real;
                            nodo.fecha_fin_real    = fecha_maxima_real;
                            nodo.costo             = costo;
                        }
                        else
                        {
                            decimal costo_temp = ObjetoDAO.calcularCostoPlan(nodo.objeto, nodo.objeto_tipo);
                            nodo.costo = (decimal)costo_temp;
                        }
                        nodo.duracion = Utils.getWorkingDays(nodo.fecha_inicio, nodo.fecha_fin);
                        setDatosCalculados(nodo.objeto, nodo.fecha_inicio, nodo.fecha_fin, nodo.costo, nodo.duracion, nodo.fecha_inicio_real, nodo.fecha_fin_real);
                    }
                    ret = true;
                }
                ret = ret && guardarProyectoBatch(listas);
            }
            catch (Exception e)
            {
                CLogger.write("19", "ProyectoDAO.class", e);
            }
            return(ret);
        }
コード例 #2
0
        public static bool calcularCostoyFechas(int subcomponenteId)
        {
            bool ret = false;

            try
            {
                List <List <Nodo> > listas = EstructuraProyectoDAO.getEstructuraObjetoArbolCalculos(subcomponenteId, 2);
                for (int i = listas.Count - 2; i >= 0; i--)
                {
                    for (int j = 0; j < listas[i].Count; j++)
                    {
                        Nodo     nodo         = listas[i][j];
                        decimal  costo        = decimal.Zero;
                        DateTime fecha_maxima = new DateTime(0);
                        DateTime fecha_minima = new DateTime(new DateTime(2999, 12, 31, 0, 0, 0).Ticks);
                        foreach (Nodo nodo_hijo in nodo.children)
                        {
                            costo       += nodo_hijo.costo;
                            fecha_minima = (nodo_hijo.fecha_inicio.TimeOfDay < fecha_minima.TimeOfDay) ? nodo_hijo.fecha_inicio : fecha_minima;
                            fecha_maxima = (nodo_hijo.fecha_fin.TimeOfDay > fecha_maxima.TimeOfDay) ? nodo_hijo.fecha_fin : fecha_maxima;
                        }
                        nodo.objeto = ObjetoDAO.getObjetoPorIdyTipo(nodo.id, nodo.objeto_tipo);
                        if (nodo.children != null && nodo.children.Count > 0)
                        {
                            nodo.fecha_inicio = fecha_minima;
                            nodo.fecha_fin    = fecha_maxima;
                            nodo.costo        = costo;
                        }
                        else
                        {
                            nodo.costo = calcularCosto((Subcomponente)nodo.objeto);
                        }
                        nodo.duracion = Utils.getWorkingDays(nodo.fecha_inicio, nodo.fecha_fin);
                        setDatosCalculados(nodo.objeto, nodo.fecha_inicio, nodo.fecha_fin, nodo.costo, nodo.duracion);
                    }
                    ret = true;
                }

                ret = ret && guardarSubComponenteBatch(listas);
            }
            catch (Exception e)
            {
                CLogger.write("20", "SubComponenteDAO.class", e);
            }

            return(ret);
        }
コード例 #3
0
        public IActionResult Matriz([FromBody] dynamic value)
        {
            try
            {
                List <Stmatriz> lstMatriz  = new List <Stmatriz>();
                int             idPrestamo = value.idPrestamo != null ? (int)value.idPrestamo : 0;
                String          lineaBase  = value.lineaBase;

                List <EstructuraProyecto> estructuraProyecto = EstructuraProyectoDAO.getEstructuraProyecto(idPrestamo, lineaBase);
                foreach (EstructuraProyecto objeto in estructuraProyecto)
                {
                    Stmatriz tempmatriz = new Stmatriz();
                    tempmatriz.objetoId     = objeto.id;
                    tempmatriz.objetoNombre = objeto.nombre;
                    tempmatriz.nivel        = objeto.treePath.Length / 8;
                    tempmatriz.objetoTipo   = objeto.objeto_tipo;

                    List <AsignacionRaci> asignaciones = AsignacionRaciDAO.getAsignacionesRaci(tempmatriz.objetoId, tempmatriz.objetoTipo, lineaBase);
                    if (asignaciones.Count > 0)
                    {
                        foreach (AsignacionRaci asignacion in asignaciones)
                        {
                            asignacion.colaboradors = ColaboradorDAO.getColaborador(asignacion.colaboradorid);
                            if (asignacion.rolRaci.Equals("r"))
                            {
                                tempmatriz.nombreR = asignacion.colaboradors.pnombre + " " + asignacion.colaboradors.papellido;
                                tempmatriz.idR     = asignacion.colaboradorid;
                            }
                            else if (asignacion.rolRaci.Equals("a"))
                            {
                                tempmatriz.nombreA = asignacion.colaboradors.pnombre + " " + asignacion.colaboradors.papellido;
                                tempmatriz.idA     = asignacion.colaboradorid;
                            }
                            else if (asignacion.rolRaci.Equals("c"))
                            {
                                tempmatriz.nombreC = asignacion.colaboradors.pnombre + " " + asignacion.colaboradors.papellido;
                                tempmatriz.idC     = asignacion.colaboradorid;
                            }
                            else if (asignacion.rolRaci.Equals("i"))
                            {
                                tempmatriz.nombreI = asignacion.colaboradors.pnombre + " " + asignacion.colaboradors.papellido;
                                tempmatriz.idI     = asignacion.colaboradorid;
                            }
                        }
                    }

                    lstMatriz.Add(tempmatriz);
                }

                bool sinColaborador = false;
                List <Stcolaborador> lstcolaboradores = new List <Stcolaborador>();
                Proyecto             proyecto         = ProyectoDAO.getProyectoPorId(idPrestamo, User.Identity.Name);

                if (proyecto != null)
                {
                    List <Colaborador> colaboradores = AsignacionRaciDAO.getColaboradoresPorProyecto(idPrestamo, null);
                    foreach (Colaborador colaborador in colaboradores)
                    {
                        Stcolaborador temp = new Stcolaborador();
                        temp.id     = colaborador.id;
                        temp.nombre = colaborador.pnombre + " " + colaborador.papellido;
                        lstcolaboradores.Add(temp);
                    }
                }

                if (lstcolaboradores.Count == 0)
                {
                    sinColaborador = true;
                    Stcolaborador temp = new Stcolaborador();
                    temp.id     = 1;
                    temp.nombre = "R";
                    lstcolaboradores.Add(temp);
                    temp        = new Stcolaborador();
                    temp.id     = 1;
                    temp.nombre = "A";
                    lstcolaboradores.Add(temp);
                    temp        = new Stcolaborador();
                    temp.id     = 1;
                    temp.nombre = "C";
                    lstcolaboradores.Add(temp);
                    temp        = new Stcolaborador();
                    temp.id     = 1;
                    temp.nombre = "I";
                    lstcolaboradores.Add(temp);
                }

                return(Ok(new
                {
                    success = lstMatriz != null && lstcolaboradores != null ? true : false,
                    matriz = lstMatriz, sinColaboradores = sinColaborador ? true : false,
                    colaboradores = lstcolaboradores
                }));
            }
            catch (Exception e)
            {
                CLogger.write("1", "MatrizRaciController.class", e);
                return(BadRequest(500));
            }
        }