public static Detalle_recurso Actualizar(Detalle_recurso detalle_recurso) { using (var bd = new DescarEntity()) { var pro = (from p in bd.Detalle_recurso where p.id_detalle_recurso == detalle_recurso.id_detalle_recurso select p).Single(); pro.cantidad_hora = detalle_recurso.cantidad_hora; pro.duracion_cadista = detalle_recurso.duracion_cadista; pro.fecha_fin = detalle_recurso.fecha_fin; pro.fecha_fin_cadista = detalle_recurso.fecha_fin_cadista; pro.fecha_inicio = detalle_recurso.fecha_inicio; pro.fecha_inicio_cadista = detalle_recurso.fecha_inicio_cadista; pro.forzada = detalle_recurso.forzada; pro.id_actividad_proyecto = detalle_recurso.id_actividad_proyecto; pro.id_estado = detalle_recurso.id_estado; pro.id_usuario = detalle_recurso.id_usuario; pro.motivo = detalle_recurso.motivo; pro.porcentaje_avance = detalle_recurso.porcentaje_avance; pro.realizada = detalle_recurso.realizada; pro.tipo = detalle_recurso.tipo; bd.SaveChanges(); return(pro); } }
/// <summary> /// Resuelve la solicitud para realizar una tarea, requerida por un cadista /// </summary> /// <param name="detalleRecurso">La tarea creada automaticamente</param> /// <param name="decision">Decisión final del piloto, si acepta o rechaza</param> /// <param name="responsable">El piloto de proyecto que tomo la decisión</param> public static void ResolverSolicitud(Detalle_recurso detalleRecurso, bool decision, USUARIO responsable) { using (var bd = new DescarEntity()) { var pro = (from p in bd.Detalle_recurso where p.id_detalle_recurso == detalleRecurso.id_detalle_recurso select p).Single(); if (decision) { pro.motivo = "solicitud aceptada por " + responsable.nombre_usuario; pro.tipo = "solicitud aceptada por " + responsable.nombre_usuario; pro.id_estado = ObtenerEstadoPorNombre("Asignado").IdEstadoTarea; pro.forzada = true; } else { pro.motivo = "solicitud rechazada por " + responsable.nombre_usuario; pro.tipo = "solicitud rechazada por " + responsable.nombre_usuario; pro.id_estado = ObtenerEstadoPorNombre("Rechazado").IdEstadoTarea; pro.forzada = false; } bd.SaveChanges(); } }
/// <summary> /// Agrega una tarea en la base de datos para el usuario seleccionado. /// Se asigna con estado Pendiente. /// Si el usuaro ya tiene ese /// </summary> /// <param name="idActividadProyectoSolicitar"></param> /// <param name="idUsuario"></param> /// <returns></returns> public static Detalle_recurso RequerirTarea(int idActividadProyectoSolicitar, int idUsuario) { Detalle_recurso tarea = new Detalle_recurso(); tarea.id_actividad_proyecto = idActividadProyectoSolicitar; tarea.forzada = false; tarea.id_usuario = idUsuario; tarea.motivo = "solicitud"; tarea.tipo = ""; tarea.porcentaje_avance = 0; tarea.realizada = false; tarea.cantidad_hora = Convert.ToDecimal(ControladorActividades.ObtenerHorasTotalesActividad(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar))); tarea.id_estado = ObtenerEstadoPorNombre("Pendiente").IdEstadoTarea; tarea.fecha_inicio = DateTime.Now; tarea.fecha_fin = ControladorCalendario.CalcularFechaFin(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar), ControladorUsuarios.ObtenerUsuario(idUsuario), tarea.fecha_inicio.Value, ControladorActividades.ObtenerHorasTotalesActividad(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar))); tarea.duracion_cadista = (decimal)ControladorActividades.ObtenerHorasOrdenCompraParaCadista(ControladorActividades.ObtenerActividadProyecto(idActividadProyectoSolicitar)); tarea.fecha_inicio_cadista = tarea.fecha_inicio; tarea.fecha_fin_cadista = tarea.fecha_fin; if (ControladorTareas.EstaAsignadaAUsuario(idActividadProyectoSolicitar, idUsuario) == null) { return(Insertar(tarea)); } return(null); }
/// <summary> /// Obtiene la estructura de todo el proyecto, incluyendo las actividades que la involucran, y las asignaciones. /// </summary> /// <param name="lista"></param> /// <param name="sub"></param> /// <param name="nivel"></param> /// <returns></returns> public static List <ClaseExpGantt> ObtenerEstructuraSubproyectosConActividades(List <ClaseExpGantt> lista, SUBPROYECTO sub, int nivel) { List <SUBPROYECTO> listaSubproyectos = ObtenerSubproyectosHijos(subpro: sub); List <Actividad_proyecto> actividades = ControladorActividades.ObtenerActividadesProyectoDeSubproyecto(sub); ClaseExpGantt estructura = new ClaseExpGantt() { subproyecto = sub, nivel = nivel }; lista.Add(estructura); nivel = nivel + 1; foreach (var actividad in actividades) { Detalle_recurso tarea = ControladorTareas.ObtenerPorActividad(actividad); ClaseExpGantt ExpoActivida = new ClaseExpGantt() { actividadProy = actividad, nivel = nivel, tarea = tarea, subproyecto = null, actividad = ControladorActividades.ObtenerActividad(actividad), usuario = tarea != null?ControladorUsuarios.ObtenerUsuario(tarea.id_usuario.Value) : null }; lista.Add(ExpoActivida); } foreach (SUBPROYECTO subpro in listaSubproyectos) { ObtenerEstructuraSubproyectosConActividades(lista, subpro, nivel); } return(lista); }
/// <summary> /// Verifica si la actividad tiene asignación automática, y si no tiene /// se lo asigna a todos sus miebros. /// </summary> /// <param name="act"></param> /// <returns></returns> public static bool VerificarAsignacionAutomatica(Actividad_proyecto act) { var subproyecto = ControladorSubproyecto.BuscarPorId(act.id_subproyecto.Value); if (subproyecto.asignacion_automatica) { Usuario_Proyecto _Usuario_proyecto = new Usuario_Proyecto(); List <USUARIO> odt_miembros_subproyectos = ControladorSubproyecto.ObtenerMiembrosIndirectos(subproyecto); foreach (USUARIO row in odt_miembros_subproyectos) { var detalle = new Detalle_recurso() { realizada = false, tipo = "automatico", porcentaje_avance = 0, id_actividad_proyecto = act.id_actividad_proyecto, motivo = "- Asignada automáticamente - ", cantidad_hora = Convert.ToDecimal(ControladorActividades.ObtenerHorasPorOrdenCompra(act)), id_usuario = Convert.ToInt32(row.id_usuario), fecha_inicio = null, fecha_fin = null }; ControladorTareas.Insertar(detalle); } return(true); } return(false); }
/// <summary> /// Agrega una tarea a la base de datos /// </summary> /// <param name="tarea"></param> /// <returns></returns> public static Detalle_recurso Insertar(Detalle_recurso tarea) { using (var bd = new DescarEntity()) { bd.Detalle_recurso.Add(tarea); bd.SaveChanges(); } return(tarea); }
public static Detalle_recurso AsignarActividad(Detalle_recurso tarea) { using (var bd = new DescarEntity()) { tarea = bd.Detalle_recurso.Add(tarea); bd.SaveChanges(); return(tarea); } }
public static int ObtenerHorasConsumidas(Detalle_recurso tarea) { using (var bd = new DescarEntity()) { var sub = (from s in bd.Detalle_recurso join cmh in bd.Cuerpo_movimiento_hora on s.id_detalle_recurso equals cmh.id_detalle_recurso where s.id_detalle_recurso == tarea.id_detalle_recurso select new { hora = SqlFunctions.DateDiff("s", cmh.entrada, cmh.salida) }); return(sub.Any() ? sub.First().hora.HasValue ? sub.Sum(x => x.hora.Value): 0 : 0); } }
public static bool TieneHorasLogueadas(Detalle_recurso item) { using (var bd = new DescarEntity()) { var act = (from av in bd.Actividad_proyecto join mv in bd.Cuerpo_movimiento_hora on av.id_actividad_proyecto equals mv.id_actividad_proyecto where mv.id_actividad_proyecto == item.id_actividad_proyecto & mv.id_detalle_recurso == item.id_detalle_recurso select av); return(act.Any()); } }
/// <summary> /// Asigna la actividad al usuario - VER TEMA DE FECHAS /// </summary> /// <param name="actividad"></param> /// <param name="usuario"></param> public static Detalle_recurso AsignarActividad(Actividad_proyecto actividad, USUARIO usuario, DateTime fecha_inicio, DateTime fecha_fin) { Detalle_recurso tarea = new Detalle_recurso(); tarea.cantidad_hora = (decimal)(ControladorActividades.ObtenerHorasTotalesActividad(actividad)); tarea.fecha_fin = fecha_fin; tarea.fecha_inicio = fecha_inicio; tarea.forzada = false; tarea.id_actividad_proyecto = actividad.id_actividad_proyecto; tarea.id_estado = ObtenerEstadoPorNombre("Asignado") != null?ObtenerEstadoPorNombre("Asignado").IdEstadoTarea : 0; tarea.id_usuario = usuario.id_usuario; tarea.motivo = "asignada por algoritmo"; tarea.porcentaje_avance = 0; tarea.realizada = false; tarea.tipo = "asignada por algoritmo"; tarea.fecha_inicio_cadista = fecha_inicio; tarea.fecha_fin_cadista = fecha_fin; tarea.duracion_cadista = (decimal)(ControladorActividades.ObtenerHorasOrdenCompraParaCadista(actividad)); return(TareaDB.AsignarActividad(tarea)); }
public static DateTime?CalcularFechaFinSubproyecto(SUBPROYECTO subproyecto) { List <ClaseExpGantt> exp = new List <ClaseExpGantt>(); ControladorSubproyecto.ObtenerEstructuraSubproyectosConActividades(exp, subproyecto, 1); List <DateTime?> fecha = new List <DateTime?>(); foreach (var item in exp) { if (item.actividad != null) { Detalle_recurso tarea = ObtenerPorActividad(item.actividadProy); if (tarea != null && tarea.fecha_fin.HasValue) { fecha.Add(tarea.fecha_fin.Value); } } } fecha.Sort((a, b) => a.Value.CompareTo(b.Value)); return(fecha.Count > 0 ? fecha.ElementAt(fecha.Count - 1) : subproyecto.fecha_inicio_estimada.Value); }
/// <summary> /// Inserta un objeto Detalle Recurso en la base da datos /// </summary> /// <param name="tarea"></param> /// <returns></returns> public static Detalle_recurso Insertar(Detalle_recurso tarea) { return(TareaDB.Insertar(tarea)); }
public static bool TieneLogueoPermitido(Detalle_recurso dr) { Actividad_proyecto ap = ActividadProyectoDB.ObtenerActividadProyecto(dr.id_actividad_proyecto.Value); SUBPROYECTO subproyecto = ControladorSubproyecto.BuscarPorId(ap.id_subproyecto.Value); Proyecto p = ControladorProyecto.ObtenerPorID(ap.id_proyecto.Value); Tipo_actividad ta = ControladorActividades.ObtenerTipoActividad(ap); Movimiento_voz mv = ControladorActividades.ObtenerMovimientoVoz(ap); bool decision = false; int orden = (int)ap.orden; if (dr.realizada.Value) { return(false); } if (dr.forzada && !dr.realizada.Value) { decision = true; } if (ap.no_conformidad) { return(false); } if (p.activo.HasValue && !p.activo.Value) { return(false); } if (orden == 1) { decision = true; } var anterior = ControladorActividades.ObtenerActividadAnterior(ap); if (anterior == null) { return(true); } if (ControladorActividades.TieneControl_prod_1_Completado(anterior)) { decision = true; } else { decision = false; } ///////// TODO - CAMBIAR A POR ORDEN //if (ta.descripcion.ToLower().Contains("conce")) //{ // if(mv == null || !mv.control_prod.Value) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("prep")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else if (ta.descripcion.ToLower().Contains("deta")) //{ // Tipo_actividad tipo_act_concepto = ControladorActividades.ObtenerTipoActividad("concepto"); // Tipo_actividad tipo_act_preparacion = ControladorActividades.ObtenerTipoActividad("preparac"); // Actividad_proyecto concepto = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_concepto); // Actividad_proyecto preparacion = ControladorSubproyecto.ObtenerActividaHijaDeTipo(subproyecto, tipo_act_preparacion); // if (ControladorActividades.TieneControl_prod_1_Completado(concepto) && ControladorActividades.TieneControl_prod_1_Completado(preparacion) && !ControladorActividades.TieneControl_prod_1_Completado(ap)) // { // decision = true; // } //} //else //{ // decision = true; //} ////////////// END TODO if (decision) { if (dr.id_estado.HasValue) { if (dr.id_estado <= 2) { return(true); } return(false); } else { return(decision); } } return(false); }
public static void ResolverSolicitud(Detalle_recurso detalle_recurso, bool decision, USUARIO responsable) { TareaDB.ResolverSolicitud(detalle_recurso, decision, responsable); }
public static Detalle_recurso Actualizar(Detalle_recurso detalle_recurso) { return(TareaDB.Actualizar(detalle_recurso)); }
public static bool TieneHorasLogueadas(Detalle_recurso item) { return(ActividadProyectoDB.TieneHorasLogueadas(item)); }
public static decimal ObtenerHorasConsumidas(Detalle_recurso tarea) { return(TareaDB.ObtenerHorasConsumidas(tarea)); }