Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
        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);
        }