コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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();
            }
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
 /// <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);
 }
コード例 #7
0
        public static Detalle_recurso AsignarActividad(Detalle_recurso tarea)
        {
            using (var bd = new DescarEntity())
            {
                tarea = bd.Detalle_recurso.Add(tarea);
                bd.SaveChanges();

                return(tarea);
            }
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
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());
            }
        }
コード例 #10
0
        /// <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));
        }
コード例 #11
0
        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);
        }
コード例 #12
0
 /// <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));
 }
コード例 #13
0
        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);
        }
コード例 #14
0
 public static void ResolverSolicitud(Detalle_recurso detalle_recurso, bool decision, USUARIO responsable)
 {
     TareaDB.ResolverSolicitud(detalle_recurso, decision, responsable);
 }
コード例 #15
0
 public static Detalle_recurso Actualizar(Detalle_recurso detalle_recurso)
 {
     return(TareaDB.Actualizar(detalle_recurso));
 }
コード例 #16
0
 public static bool TieneHorasLogueadas(Detalle_recurso item)
 {
     return(ActividadProyectoDB.TieneHorasLogueadas(item));
 }
コード例 #17
0
 public static decimal ObtenerHorasConsumidas(Detalle_recurso tarea)
 {
     return(TareaDB.ObtenerHorasConsumidas(tarea));
 }