public ActividadRegistrada RegistrarNuevaActividad(CrearActividad crearActividad)
        {
            var actividad = new Actividad()
            {
                Estado      = crearActividad.Estado,
                HoraDeFin   = crearActividad.HoraFin,
                HoraInicio  = crearActividad.HoraInicio,
                Nombre      = crearActividad.Nombre,
                Observacion = crearActividad.Observacion,
                PersonaId   = crearActividad.IdPersona,
                ProyectoId  = crearActividad.IdProyecto
            };



            using (var db = new PersonalDb())
            {
                if (hayCruceDeHorarios(crearActividad, db))
                {
                    throw new ExcepcionControlada("El trabajador tienes algo programado a esa hora");;
                }
                db.Actividades.Add(actividad);
                db.SaveChanges();
                return(new ActividadRegistrada()
                {
                    EstadoDeLaActividad = actividad.Estado.ToString(),
                    NombreDeLaActividad = actividad.Nombre,
                    HoraFin = actividad.HoraDeFin,
                    HoraInicio = actividad.HoraInicio,
                    Id = actividad.Id,
                    NombreDeLaPersona = db.Personas.Find(actividad.PersonaId).Nombre,
                    NombreDelProyecto = db.Proyectos.Find(actividad.ProyectoId).Nombre,
                });
            }
        }
 public IEnumerable <ActividadRegistrada> ListarTodasLasActividadesRegistradas()
 {
     using (var db = new PersonalDb())
     {
         return(db.Actividades.Select(x => new
         {
             NombrePersona = x.Persona.Nombre,
             NombreDelProyecto = x.Proyecto.Nombre,
             NombreDeLaActividad = x.Nombre,
             Estado = x.Estado,
             HoraInicio = x.HoraInicio,
             HoraFin = x.HoraDeFin,
             Id = x.Id
         })
                .ToList()
                .Select(x => new ActividadRegistrada()
         {
             EstadoDeLaActividad = x.Estado.ToString(),
             NombreDeLaActividad = x.NombreDeLaActividad,
             HoraFin = x.HoraFin,
             HoraInicio = x.HoraInicio,
             Id = x.Id,
             NombreDeLaPersona = x.NombrePersona,
             NombreDelProyecto = x.NombreDelProyecto
         }));
     }
 }
 public IEnumerable <ProyectoRegistrado> ListarTodosLosProyectos()
 {
     using (var db = new PersonalDb())
     {
         return(db.Proyectos.ToList().Select(x => new ProyectoRegistrado()
         {
             Id = x.Id,
             Nombre = x.Nombre
         }));
     }
 }
 public IEnumerable <PersonaRegistrada> ListarTodasLasPersonasRegistradas()
 {
     using (var db = new PersonalDb())
     {
         return(db.Personas.ToList().Select(x => new PersonaRegistrada()
         {
             Id = x.Id,
             Nombre = x.Nombre
         }));
     }
 }
        private bool hayCruceDeHorarios(CrearActividad crearActividad, PersonalDb db)
        {
            var horaInicio = crearActividad.HoraInicio;
            var horaFin    = crearActividad.HoraFin;

            return(db.Actividades
                   .Where(x => x.PersonaId.Equals(crearActividad.IdPersona))
                   .Where(x =>
                          (x.HoraDeFin >= horaInicio && x.HoraInicio <= horaFin) ||
                          (x.HoraDeFin >= horaInicio && x.HoraDeFin <= horaFin) ||
                          (x.HoraInicio <= horaInicio && x.HoraDeFin >= horaFin)
                          )
                   .Any());
        }
 public int RegistrarExcepcion(CrearExcepcion crearExcepcion)
 {
     using (var db = new PersonalDb())
     {
         var nuevaExcepcion = new LogDeExcepcion()
         {
             Content = crearExcepcion.Contenido,
             Mensaje = crearExcepcion.Excepcion.Message,
             Stack   = crearExcepcion.Excepcion.StackTrace,
             Uri     = crearExcepcion.Uri
         };
         db.LogDeExcepciones.Add(nuevaExcepcion);
         db.SaveChanges();
         return(nuevaExcepcion.Id);
     }
 }