Ejemplo n.º 1
0
 //отказ записи
 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;
 }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        //подтверждение записи
        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;
        }