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); }
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); } }
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); } }
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); } }
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); } }
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()); } }
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); } }
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()); }
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); } }
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]); } }
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)); }
public static Actividad_proyecto ActualizarActividadProyecto(Actividad_proyecto actividadProyecto) { return(ActividadProyectoDB.ActualizarActividad_Proyecto(actividadProyecto)); }
private static List <Detalle_recurso> obtenerTareasDeActividad(Actividad_proyecto actividad) { return(ActividadProyectoDB.obtenerTareasDeActividad(actividad)); }