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