private void Assign(int userId) { var test = (from ru in db.RecursoUsuarios where !ru.Estado select ru.RecursoId); var recursos = (from r in db.Recursos where !test.Contains(r.RecursoId) select r).ToList(); var queue = (from q in db.Queues where !q.Estado select q) .OrderBy(q=>q.FechaEntrada); if (queue != null) { var lista = queue.ToList(); foreach (var r in recursos) { for (var i = 0; i < lista.Count(); i++) { var usuario = lista[i]; if ((usuario.RecursoId == r.RecursoId //Is the resource specified || usuario.RecursoId == null) //Has not specified any particular resource && (!usuario.Estado) //Has not yet be assigned ) { var recursoUsuario = new RecursoUsuario() { UserId = usuario.UserId, RecursoId = r.RecursoId, FechaEntrada = DateTime.Now, Estado = false }; db.RecursoUsuarios.Add(recursoUsuario); usuario.Estado = true; usuario.FechaSalida = DateTime.Now; db.SaveChanges(); if (usuario.UserId != userId) sendMail(usuario.User.UserName); } } } db.SaveChanges(); } }
public ActionResult Usar(int RecursoId) { alreadyQueued = isQueue(); if (!alreadyQueued) { var recursoUsuario = new RecursoUsuario() { UserId = GetCurrentUser().UserId, RecursoId = RecursoId, FechaEntrada = DateTime.Now, Estado = false }; db.RecursoUsuarios.Add(recursoUsuario); db.SaveChanges(); } Broadcast(); return RedirectToAction("Index"); }