public static double ObtenerHorasAsignadas(Actividad_proyecto actividad)
        {
            //using (var bd = new DescarEntity())
            //{
            //    var act = (from ap in bd.Actividad_proyecto
            //               join s in bd.SUBPROYECTOes on ap.id_subproyecto equals s.id_subproyecto
            //               join acti in bd.Actividads on ap.id_actividad equals acti.id_actividad
            //               join ta in bd.Tipo_actividad on acti.id_tipo_actividad equals ta.id_tipo_actividad
            //               where ap.id_actividad_proyecto == actividad.id_actividad_proyecto
            //               select (s.horas_estimadas * ta.criticidad /100 ));

            //    return act.Any() ? (double)act.Single() : 0;
            //}
            using (var bd = new DescarEntity())
            {
                var act = (from ap in bd.Actividad_proyecto
                           join s in bd.SUBPROYECTOes on ap.id_subproyecto equals s.id_subproyecto
                           join hs in bd.HORA_TIPO_SUBPROYECTO on s.id_hora_tipo_subproyecto equals hs.id_hora_tipo_subproyecto
                           join acti in bd.Actividads on ap.id_actividad equals acti.id_actividad
                           join ta in bd.Tipo_actividad on acti.id_tipo_actividad equals ta.id_tipo_actividad
                           where ap.id_actividad_proyecto == actividad.id_actividad_proyecto
                           select(hs.horas * ta.criticidad / 100));

                return(act.Any() ? (double)act.Single() : 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);
        }
 public static Actividad_proyecto Insertar(Actividad_proyecto actividad)
 {
     using (var bd = new DescarEntity())
     {
         bd.Actividad_proyecto.Add(actividad);
         bd.SaveChanges();
     }
     return(actividad);
 }
Example #4
0
 public static Programacion_Actividad ObtenerProgramacion(Actividad_proyecto activ_proy)
 {
     using (var bd = new DescarEntity())
     {
         var sub = (from s in bd.Programacion_Actividad
                    where s.id_actividad_proyecto == activ_proy.id_actividad_proyecto
                    select s);
         return(sub.Any() ? sub.First() : null);
     }
 }
Example #5
0
 public static Detalle_recurso ObtenerPorActividad(Actividad_proyecto actividad)
 {
     using (var bd = new DescarEntity())
     {
         var sub = (from s in bd.Detalle_recurso
                    where s.id_actividad_proyecto == actividad.id_actividad_proyecto
                    select s);
         return(sub.Any() ? sub.First() : null);
     }
 }
Example #6
0
        public static double ObtenerHorasTotalesActividad(Actividad_proyecto act_pto)
        {
            double horas_normales, eficiencia;

            horas_normales = ActividadProyectoDB.ObtenerHorasAsignadas(act_pto);
            eficiencia     = ObtenerEficienciaActividad(act_pto).HasValue ? ObtenerEficienciaActividad(act_pto).Value : 100;
            eficiencia     = horas_normales * eficiencia / 100;

            return(horas_normales + eficiencia);
        }
        public static Actividad ObtenerActividad(Actividad_proyecto act_pro)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from a in bd.Actividads
                           where a.id_actividad == act_pro.id_actividad
                           select a);

                return(act.Any() ? act.First() : null);
            }
        }
        public static double ObtenerHorasConsumidas(Actividad_proyecto acti)
        {
            using (var bd = new DescarEntity())
            {
                var tipo_act = (from ta in bd.Cuerpo_movimiento_hora
                                where ta.id_actividad_proyecto == acti.id_actividad_proyecto
                                select ta).ToList();

                return(tipo_act.Select(x => ((TimeSpan)(x.salida - x.entrada)).TotalHours).Sum());
            }
        }
        public static Movimiento_voz ObtenerMovimientoVoz(Actividad_proyecto ap)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from mv in bd.Movimiento_voz
                           where mv.id_actividad_proyecto == ap.id_actividad_proyecto
                           select mv);

                return(act.Any() ? act.First() : null);
            }
        }
        public static List <Detalle_recurso> obtenerTareasDeActividad(Actividad_proyecto actividad)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from av in bd.Detalle_recurso
                           where av.id_actividad_proyecto == actividad.id_actividad_proyecto
                           select av);

                return(act.ToList());
            }
        }
        public static Tipo_actividad ObtenerTipoActividad(Actividad_proyecto ap)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from ta in bd.Tipo_actividad
                           join a in bd.Actividads on ta.id_tipo_actividad equals a.id_tipo_actividad
                           where a.id_actividad == ap.id_actividad
                           select ta);

                return(act.Any() ? act.Single() : null);
            }
        }
        public static bool EstaCompletada(Actividad_proyecto ap)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from mv in bd.Movimiento_voz
                           where mv.id_actividad_proyecto == ap.id_actividad_proyecto
                           & mv.completado == true
                           select mv);

                return(act.Any());
            }
        }
        public static void EliminarProgramacionActividadDeActividadProyecto(Actividad_proyecto item)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from mv in bd.Programacion_Actividad
                           where mv.id_actividad_proyecto == item.id_actividad_proyecto
                           select mv);

                bd.Programacion_Actividad.RemoveRange(act);
                bd.SaveChanges();
            }
        }
        public static bool TieneHorasLogueadas(Actividad_proyecto 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
                           select av);

                return(act.Any());
            }
        }
        public static Actividad_proyecto ObtenerActividadPosterior(Actividad_proyecto act_pto)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from ap_posterior in bd.Actividad_proyecto
                           where act_pto.id_subproyecto == ap_posterior.id_subproyecto
                           & ap_posterior.orden > act_pto.orden
                           select ap_posterior);

                return(act.Any() ? act.OrderBy(x => x.orden).First() : null);
            }
        }
Example #16
0
        public static void EliminarDetalleRecursoActividad(Actividad_proyecto item)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from mv in bd.Detalle_recurso
                           where mv.id_actividad_proyecto == item.id_actividad_proyecto
                           select mv);

                bd.Detalle_recurso.RemoveRange(act);
                bd.SaveChanges();
            }
        }
        /// <summary>
        /// Completar
        /// </summary>
        /// <param name="actividad"></param>
        /// <returns></returns>
        public static bool AsignarActividadProyecto(Actividad_proyecto actividad, double cantidad_horas_solapamiento)
        {
            List <Tuple <USUARIO, decimal> > miembros_habilitados = ControladorSubproyecto.ObtenerMiemrosHabilitadosParaAsignar(actividad);

            DateTime fecha_inicio;
            DateTime fecha_fin;
            double   tiempo_trabajado, tiempo_total;

            tiempo_total     = ControladorActividades.ObtenerHorasTotalesActividad(actividad);
            tiempo_trabajado = 0;//ControladorActividades.ObtenerHorasConsumidas(actividad);
            //Modificar este metodo para que verifique fecha inicio mayor a la actual.
            fecha_inicio = ControladorActividades.ObtenerFechaInicioMinima(actividad);
            //Devuelve la fecha fin ideal
            fecha_fin = ControladorCalendario.ObtenerFechaFinMinima(actividad, fecha_inicio).Value;

            List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaPorFechaFin;
            List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaPorCalifi;

            List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > > listaOrdenada = new List <Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> > >();

            if (!ControladorActividades.EstaCompletada(actividad))
            {
                foreach (var miem in miembros_habilitados)
                {
                    DateTime fecha             = ObtenerFechaInicioMinimaUsuario(miem.Item1, fecha_inicio, tiempo_total - tiempo_trabajado, actividad, fecha_fin);
                    DateTime?fecha_fin_usuario = ControladorCalendario.CalcularFechaFin(actividad, miem.Item1, fecha, null);

                    listaOrdenada.Add(new Tuple <Tuple <USUARIO, decimal>, Tuple <DateTime, DateTime> >(miem, new Tuple <DateTime, DateTime>(fecha, fecha_fin_usuario.Value)));
                }

                if (listaOrdenada.Count > 0)
                {
                    //Ordena la lista primero por fecha de fin, luego por calificaciones, el que tiene mas primero.
                    listaOrdenada    = listaOrdenada.OrderBy(x => x.Item2.Item2).ThenByDescending(x => x.Item1.Item2).ToList();
                    listaPorFechaFin = listaOrdenada.OrderBy(x => x.Item2.Item2).ToList();
                    listaPorCalifi   = listaOrdenada.OrderByDescending(x => x.Item1.Item2).ToList();

                    if (listaOrdenada.ElementAt(0).Item2.Item2.Subtract(listaPorCalifi.ElementAt(0).Item2.Item2).TotalHours <= cantidad_horas_solapamiento)
                    {
                        AsignarActividad(actividad, listaPorCalifi.ElementAt(0).Item1.Item1, listaPorCalifi.ElementAt(0).Item2.Item1, listaPorCalifi.ElementAt(0).Item2.Item2);
                    }
                    else
                    {
                        AsignarActividad(actividad, listaOrdenada.ElementAt(0).Item1.Item1, listaOrdenada.ElementAt(0).Item2.Item1, listaOrdenada.ElementAt(0).Item2.Item2);
                    }


                    return(true);
                }
                return(false);
            }
            return(false);
        }
        public static double?ObtenerEficienciaActividad(Actividad_proyecto act_pto)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from ap in bd.Actividad_proyecto
                           join a in bd.Actividads on ap.id_actividad equals a.id_actividad
                           join ta in bd.Tipo_actividad on a.id_tipo_actividad equals ta.id_tipo_actividad
                           where ap.id_actividad_proyecto == act_pto.id_actividad_proyecto
                           select ta.porc_eficiencia);

                return(act.Any() && act.First().HasValue ? (double?)act.First().Value : null);
            }
        }
Example #19
0
        public static double ObtenerHorasOrdenCompraParaCadista(Actividad_proyecto act_pto)
        {
            double horas_orden_compra;

            horas_orden_compra = ActividadProyectoDB.ObtenerHorasPorOrdenCompra(act_pto);
            //Se le resta el 15% que corresponde a la calidad
            horas_orden_compra = horas_orden_compra - (horas_orden_compra * 0.15);

            //eficiencia = ObtenerEficienciaActividad(act_pto).HasValue ? ObtenerEficienciaActividad(act_pto).Value : 100;
            //eficiencia = horas_orden_compra * eficiencia / 100;

            return(horas_orden_compra);
        }
        public static double ObtenerHorasConsumidas(Actividad_proyecto acti, string tipo_logueo)
        {
            using (var bd = new DescarEntity())
            {
                var tipo_act = (from ta in bd.Cuerpo_movimiento_hora
                                join tl in bd.TIPO_LOGUEO on ta.id_tipo_logueo equals tl.id_tipo_logueo
                                where ta.id_actividad_proyecto == acti.id_actividad_proyecto &&
                                (tl.nombre.ToLower().Contains(tipo_logueo.ToLower()) ||
                                 (tl.nombre.ToLower().Contains("sin asignar") && tipo_logueo.ToLower().Contains("produccion")))
                                select ta).ToList();

                return(tipo_act.Select(x => ((TimeSpan)(x.salida - x.entrada)).TotalHours).Sum());
            }
        }
Example #21
0
 public static void EliminarActividad(Actividad_proyecto item)
 {
     if (!TieneHorasLogueadas(item))
     {
         //Eliminar Detalle Recurso
         ControladorTareas.EliminarDetalleRecursoActividad(item);
         //Eliminar Programacion_Actividad
         ActividadProyectoDB.EliminarProgramacionActividadDeActividadProyecto(item);
         //Eliminar Actividad
         ActividadProyectoDB.EliminarActividadDeActividadProyecto(item);
         //Eliminar Actividad_Proyecto
         ActividadProyectoDB.EliminarActividadProyecto(item);
     }
 }
Example #22
0
        public static List <USUARIO> ObtenerMiemrosHabilitados(Actividad_proyecto actividad)
        {
            List <USUARIO> miembros = ObtenerMiembrosIndirectos(BuscarPorId(actividad.id_subproyecto.Value));
            List <Tuple <USUARIO, Tuple <int, decimal> > > listaMiembros = new List <Tuple <USUARIO, Tuple <int, decimal> > >();

            foreach (var item in miembros)
            {
                if (!ControladorUsuarios.EstaHabilitadoParaActividad(item, actividad))
                {
                    listaMiembros.Add(new Tuple <USUARIO, Tuple <int, decimal> >(item, new Tuple <int, decimal>(ControladorUsuarios.ObtenerCantidadCalificaciones(item), ControladorActividades.ObtenerTipoActividadUsuario(ControladorActividades.ObtenerActividad(actividad).id_tipo_actividad, item.id_usuario).calificacion.Value)));
                }
            }

            return(listaMiembros.OrderByDescending(x => x.Item2.Item2).ThenBy(x => x.Item2.Item1).Select(x => x.Item1).ToList());
        }
Example #23
0
        public static bool EstaHabilitadoParaActividad(USUARIO usuario, Actividad_proyecto actividad)
        {
            using (var bd = new DescarEntity())
            {
                var sub = (from s in bd.USUARIOs
                           join tau in bd.Tipo_Actividad_usuario on s.id_usuario equals tau.id_usuario
                           join ta in bd.Tipo_actividad on tau.id_tipo_actividad equals ta.id_tipo_actividad
                           join a in bd.Actividads on ta.id_tipo_actividad equals a.id_tipo_actividad
                           where actividad.id_actividad == a.id_actividad &&
                           tau.id_usuario == usuario.id_usuario
                           select tau.habilitado);

                return(sub.Any() ? sub.First().HasValue&& sub.First().Value == true ? true : false : false);
            }
        }
        /// <summary>
        /// Devuelve las horas para la actividad, en base a las horas presupuestadas.
        /// </summary>
        /// <param name="actividad"></param>
        /// <returns></returns>
        public static double ObtenerHorasPorOrdenCompra(Actividad_proyecto actividad)
        {
            using (var bd = new DescarEntity())
            {
                var act = (from ap in bd.Actividad_proyecto
                           join s in bd.SUBPROYECTOes on ap.id_subproyecto equals s.id_subproyecto
                           join acti in bd.Actividads on ap.id_actividad equals acti.id_actividad
                           join ta in bd.Tipo_actividad on acti.id_tipo_actividad equals ta.id_tipo_actividad
                           where ap.id_actividad_proyecto == actividad.id_actividad_proyecto
                           join hs in bd.HORA_TIPO_SUBPROYECTO on s.id_hora_tipo_subproyecto equals hs.id_hora_tipo_subproyecto
                           select(s.horas_orden_compra.HasValue ? s.horas_orden_compra * ta.criticidad / 100 : hs.horas * ta.criticidad / 100));

                return(act.Any() ? (double)act.Single() : 0);
            }
        }
Example #25
0
        public static void SubirOrdenActividad(Actividad_proyecto actividad)
        {
            ActualizarOrdenActividades(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value));
            List <Actividad_proyecto> actividades = ObtenerActividadesProyectoDeSubproyecto(ControladorSubproyecto.BuscarPorId(actividad.id_subproyecto.Value)).OrderBy(x => x.orden).ToList();

            int indexOf = actividades.IndexOf(actividades.Where(x => x.id_actividad_proyecto == actividad.id_actividad_proyecto).FirstOrDefault());

            if (indexOf == 0)
            {
                return;
            }

            actividades[indexOf].orden--;
            ControladorActividades.ActualizarActividadProyecto(actividades[indexOf]);

            if (indexOf - 1 >= 0)
            {
                actividades[indexOf - 1].orden++;
                ControladorActividades.ActualizarActividadProyecto(actividades[indexOf - 1]);
            }
        }
Example #26
0
        public static Actividad_proyecto InsertarActividadProyecto(Actividad_proyecto actividadSubproyecto)
        {
            var act = new Actividad_proyecto
            {
                asignable            = actividadSubproyecto.asignable,
                asignada             = actividadSubproyecto.asignada,
                avance               = actividadSubproyecto.avance,
                cantidad_hora        = actividadSubproyecto.cantidad_hora,
                complejidad          = actividadSubproyecto.complejidad,
                fecha_fin_previsto   = actividadSubproyecto.fecha_fin_previsto,
                fecha_fin_real       = actividadSubproyecto.fecha_fin_real,
                fecha_inicio         = actividadSubproyecto.fecha_inicio,
                fecha_inicio_real    = actividadSubproyecto.fecha_inicio_real,
                forzada_fecha_fin    = actividadSubproyecto.forzada_fecha_fin,
                forzada_fecha_inicio = actividadSubproyecto.forzada_fecha_inicio,
                horas                 = actividadSubproyecto.horas,
                id_actividad          = actividadSubproyecto.id_actividad,
                id_cadista            = actividadSubproyecto.id_cadista,
                id_cliente            = actividadSubproyecto.id_cliente,
                id_control            = actividadSubproyecto.id_control,
                id_controlador_1      = actividadSubproyecto.id_controlador_1,
                id_controlador_2      = actividadSubproyecto.id_controlador_2,
                id_estado_proyecto    = actividadSubproyecto.id_estado_proyecto,
                id_prioridad          = actividadSubproyecto.id_prioridad,
                id_proveedor          = actividadSubproyecto.id_proveedor,
                id_proyecto           = actividadSubproyecto.id_proyecto,
                id_subproyecto        = actividadSubproyecto.id_subproyecto,
                motivo_no_conformidad = actividadSubproyecto.motivo_no_conformidad,
                no_conformidad        = actividadSubproyecto.no_conformidad,
                nro               = actividadSubproyecto.nro,
                objetivo          = actividadSubproyecto.objetivo,
                observacion       = actividadSubproyecto.observacion,
                orden             = actividadSubproyecto.orden,
                porcentaje_avance = actividadSubproyecto.porcentaje_avance,
                prioridad         = actividadSubproyecto.prioridad
            };

            act = ActividadProyectoDB.Insertar(act);
            return(ActualizarHorasAsignadas(act));
        }
        /// <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 bool EstaHabilitadoParaActividad(USUARIO usuario, Actividad_proyecto actividad)
 {
     return(UsuariosBD.EstaHabilitadoParaActividad(usuario, actividad));
 }
Example #29
0
 public static Actividad_proyecto ActualizarActividadProyecto(Actividad_proyecto actividadProyecto)
 {
     return(ActividadProyectoDB.ActualizarActividad_Proyecto(actividadProyecto));
 }
Example #30
0
 private static List <Detalle_recurso> obtenerTareasDeActividad(Actividad_proyecto actividad)
 {
     return(ActividadProyectoDB.obtenerTareasDeActividad(actividad));
 }