//отказ записи public async Task<NoteModelForAdmin> FailureNoteAsync(NoteModelForAdmin noteModel) { if (noteModel == null) { return null; } Note note = await Database.Notes.GetAsync(noteModel.Id); note.Status = "Отклонено"; //удаляем из бд все файлы записи foreach (var file in note.Files.ToList()) { Database.Files.Delete(file); } int result = await Database.SaveAsync(); return result > 0 ? noteModel : null; }
public async Task<ActionResult> ModerateNote(NoteModelForAdmin note) { //если запись не подтверждена, не подтверждаем и все файлы if (note.Files != null) { if (!note.Activated) { foreach (var file in note.Files) { file.Activated = false; } } foreach (var file in note.Files.ToList()) { var f = await ModerateNoteService.GetFileAsync(file.Id); //если файл подтверждён, перемещаем его в другую папку if (file.Activated == true) { if (!Directory.Exists(Server.MapPath("~/Files/Note/") + note.Id)) { Directory.CreateDirectory(Server.MapPath("~/Files/Note/") + note.Id); } string fileName = f.Name; string oldPath = Server.MapPath(f.Path); string newPath = Server.MapPath("~/Files/Note/" + note.Id + "/" + fileName); if (System.IO.File.Exists(oldPath)) { System.IO.File.Move(oldPath, newPath); } file.Path = "~/Files/Note/" + note.Id + "/" + fileName; } else //удаляем файл { System.IO.File.Delete(Server.MapPath(f.Path)); } } } var result = note.Activated ? await ModerateNoteService.SubmitNoteAsync(note) : await ModerateNoteService.FailureNoteAsync(note); if (result != null) { ViewBag.Moderated = note.Activated ? "Запись " + note.Title + " успешно принята." : "Запись " + note.Title + " успешно отклонена."; return View("Moderated"); } return HttpNotFound(); }
//подтверждение записи public async Task<NoteModelForAdmin> SubmitNoteAsync(NoteModelForAdmin noteModel) { if (noteModel == null) { return null; } Note note = await Database.Notes.GetAsync(noteModel.Id); note.CategoryId = noteModel.Category.Id; note.Title = noteModel.Title; note.Description = noteModel.Description; note.Status = "Принято"; note.Date = DateTime.Now; //удаляем ненужные тэги у записи в базе foreach (var tag in note.Tags.ToList()) { //если тэг отсутствует в модерируемой записи if (noteModel.Tags.FirstOrDefault(t => t.Id == tag.Id) == null) { //удаляем тэг Tag t = await Database.Tags.GetAsync(tag.Id); note.Tags.Remove(t); } } //добовляем новые тэги foreach (var tag in noteModel.Tags) { //если тэг существовал в базе if (tag.Id != 0) { //если этого тэга не было у записи добовляем его if (note.Tags.FirstOrDefault(t => t.Id == tag.Id) == null) { Tag t = await Database.Tags.GetAsync(tag.Id); note.Tags.Add(t); } } //если тэг новый else { //добовляем его к записи и в бд note.Tags.Add(new Tag { Id = tag.Id, Name = tag.Name }); } } //обновляем значения характеристик foreach (var spec in note.NoteSpecifications.ToList()) { spec.Value = noteModel.NoteSpecifications.FirstOrDefault(s => s.SpecificationId == spec.SpecificationId).Value; } //редактируем файлы foreach (var file in note.Files.ToList()) { var newF = noteModel.Files.FirstOrDefault(f => f.Id == file.Id); //если файл не подтверждён, удаляем его из базы if (!newF.Activated) { Database.Files.Delete(file); } //если файл подтверждён, меняем ему путь else { file.Path = newF.Path; } } Database.Notes.Update(note); int result = await Database.SaveAsync(); return result > 0 ? noteModel : null; }