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