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 ActividadRegistrada RegistrarNuevaActividad(CrearActividad crearActividad)
        {
            var nuevaActividadRegistrada = this._gestorDePersonal.RegistrarNuevaActividad(crearActividad);

            var    context = GlobalHost.ConnectionManager.GetHubContext <NotificationHub>();
            string message = "Se registro una nueva actividad con id " + nuevaActividadRegistrada.Id;

            context.Clients.All.NewNotificationPushed(message);

            return(nuevaActividadRegistrada);
        }
        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());
        }