public static void InitializeTaskModel(ScriptedTaskModel model, Guid id, IScriptedTask task, ApplicationDbContext db) { model.Task = task; var file = db.Files .Where(x => x.Id == id) .Include(x => x.CatalogRecord) .Include(x => x.CatalogRecord.Organization) .FirstOrDefault(); model.CatalogRecordId = file.CatalogRecord.Id; model.CatalogRecordTitle = file.CatalogRecord.Title; model.File = file; model.FileId = file.Id; var record = file.CatalogRecord; // The file with the given ID is the primary file for this task. model.PrimaryFiles.Add(new FileViewModel(file)); // Add all the other files, too, for reference. foreach (var x in record.Files.Where(x => x.Status != FileStatus.Removed)) { model.AllFiles.Add(new FileViewModel(x)); } }
public static ManagedFile UpdateStatus(Guid id, IScriptedTask task, IPrincipal principal, System.Web.Mvc.FormCollection form, ApplicationDbContext db) { var file = db.Files.Where(x => x.Id == id).Include(x => x.CatalogRecord).FirstOrDefault(); if (!file.CatalogRecord.Curators.Any(x => x.UserName == principal.Identity.Name)) { throw new HttpException(403, "Forbidden"); } var status = db.TaskStatuses.Where(x => x.CatalogRecord.Id == file.CatalogRecord.Id && x.File.Id == file.Id && x.TaskId == task.Id) .FirstOrDefault(); var user = db.Users.Where(x => x.UserName == principal.Identity.Name).FirstOrDefault(); string result = form["result"]; string notes = form["notes"]; // Add a note. if (!string.IsNullOrWhiteSpace(notes)) { var note = new Note() { CatalogRecord = file.CatalogRecord, File = file, Timestamp = DateTime.UtcNow, User = user, Text = notes }; db.Notes.Add(note); } if (result == "Accept" || result == "Not Applicable") { status.IsComplete = true; status.CompletedBy = user; status.CompletedDate = DateTime.UtcNow; string eventTitle = null; if (result == "Accept") { eventTitle = "Accept task: " + task.Name; } else if (result == "Not Applicable") { eventTitle = "Not applicable task: " + task.Name; } // Log the acceptance. var log = new Event() { EventType = EventTypes.AcceptTask, Timestamp = DateTime.UtcNow, User = user, RelatedCatalogRecord = file.CatalogRecord, Title = eventTitle, Details = notes, }; log.RelatedManagedFiles.Add(file); db.Events.Add(log); } else if (result == "Undo") { status.IsComplete = false; status.CompletedBy = null; status.CompletedDate = null; // Log the rejection. var log = new Event() { EventType = EventTypes.RejectTask, Timestamp = DateTime.UtcNow, User = user, RelatedCatalogRecord = file.CatalogRecord, Title = "Task unaccepted: " + task.Name, Details = notes }; log.RelatedManagedFiles.Add(file); db.Events.Add(log); } else { // Log the rejection. var log = new Event() { EventType = EventTypes.RejectTask, Timestamp = DateTime.UtcNow, User = user, RelatedCatalogRecord = file.CatalogRecord, Title = "Reject task: " + task.Name, Details = notes }; log.RelatedManagedFiles.Add(file); db.Events.Add(log); } db.SaveChanges(); return(file); }