Beispiel #1
0
        //редактировать запись
        public async Task<NoteModelForUser> EditNoteAsync(NoteModelForUser noteModel)
        {
            if (noteModel == null)
            {
                return null;
            }
            //берём запись из БД
            Note noteEdit = await Database.Notes.GetAsync(noteModel.Id);
            //обновляем поля
            noteEdit.Title = noteModel.Title;
            noteEdit.Description = noteModel.Description;
            if (noteModel.ImagePath != null)
            {
                noteEdit.ImagePath = noteModel.ImagePath;
            }           
            noteEdit.Status = "Ожидает модерацию";
            noteEdit.Date = DateTime.Now;

            if (noteModel.Files != null)
            {
                //удаляем ненужные старые файлы
                foreach (var file in noteEdit.Files.ToList())
                {
                    //если файл был удалён, удаляем его из бд
                    if (noteModel.Files.FirstOrDefault(f => f.Id == file.Id) == null)
                    {
                        Database.Files.Delete(file);
                    }
                }
                //добавляем прикрепляемые файлы
                foreach (var file in noteModel.Files)
                {
                    //если файла не было у записи, добавляем его
                    if (noteEdit.Files.FirstOrDefault(f => f.Id == file.Id) == null)
                    {
                        File fileAdd = new File
                        {
                            FileName = file.Name,
                            Path = file.Path,
                            Size = file.Size
                        };
                        noteEdit.Files.Add(fileAdd);
                    }                    
                }
            }

            //удаляем удалённые тэги
            foreach (var tag in noteEdit.Tags.ToList())
            {
                //если тэг был удалён, удаляем его
                if (noteModel.Tags.FirstOrDefault(t => t.Id == tag.Id) == null)
                {
                    noteEdit.Tags.Remove(tag);
                    //Database.Tags.Delete(tag);
                }
            }

            //добовляем тэги
            foreach (var tag in noteModel.Tags.ToList())
            {
                //если тэг отсутствовал в БД, добовляем его
                if (tag.Id == 0)
                {
                    noteEdit.Tags.Add(new Tag { Id = tag.Id, Name = tag.Name });
                }
                //если тэг присутствовал, берём существующий
                else
                {
                    //если тэга не было у записи, добовляем его
                    if (noteEdit.Tags.FirstOrDefault(t => t.Id == tag.Id) == null)
                    {
                        noteEdit.Tags.Add(await Database.Tags.GetAsync(tag.Id));
                    }                    
                }
            }

            //редактируем характеристики
            foreach (var sp in noteModel.NoteSpecifications)
            {
                //если характеристика отсутствовала в БД, добовляем её
                if (sp.SpecificationId == 0)
                {
                    noteEdit.NoteSpecifications.Add(new NoteSpecification
                    {
                        Specification = new Specification
                        {
                            Id = sp.SpecificationId,
                            Title = sp.Title,
                            CategoryId = noteModel.Category.Id
                        },
                        SpecificationId = sp.SpecificationId,
                        Value = sp.Value,
                    });
                }
                else
                {
                    //редактируем характеристику
                    NoteSpecification specif = (await Database.NoteSpecifications.FindAsync(n => n.SpecificationId == sp.SpecificationId)).FirstOrDefault();
                    specif.Value = sp.Value;
                }
            }

            //обвновляем запись в БД
            Database.Notes.Update(noteEdit);
            //сохраняем результат
            int result = await Database.SaveAsync();

            return result > 0 ? noteModel : null;
        }
Beispiel #2
0
        //добавление новой записи пользователем
        public async Task<NoteAddModel> AddNewNoteAsync(NoteAddModel noteModel)
        {
            if (noteModel == null)
            {
                return null;
            }
            //создаём запись
            Note noteAdd = new Note
            {
                Title = noteModel.Title,
                Description = noteModel.Description,
                ImagePath = noteModel.ImagePath,
                Status = "Ожидает модерацию",
                CatalogUserId = noteModel.UserId,
                CategoryId = noteModel.CategoryId,
                Date = DateTime.Now,
            };
            
            if (noteModel.Files != null)
            {
                //добавляем прикрепляемы файлы
                foreach (var file in noteModel.Files)
                {
                    File fileAdd = new File
                    {
                        FileName = file.Name,
                        Path = file.Path,
                        Size = file.Size
                    };
                    noteAdd.Files.Add(fileAdd);
                }
            }

            if (!String.IsNullOrEmpty(noteModel.Tags))
            {
                var tags = await JsonConvert.DeserializeObjectAsync<TagForNoteAddModel[]>(noteModel.Tags);
                //добовляем тэги
                foreach (var tag in tags)
                {
                    //если тэг отсутствовал в БД, добовляем его
                    if (tag.Id == 0)
                    {
                        noteAdd.Tags.Add(new Tag { Id = tag.Id, Name = tag.Name });
                    }
                    //если тэг присутствовал, берём существующий
                    else
                    {
                        noteAdd.Tags.Add(await Database.Tags.GetAsync(tag.Id));
                    }                    
                }
            }

            if (!String.IsNullOrEmpty(noteModel.NoteSpecifications))
            {
                var specif = await JsonConvert.DeserializeObjectAsync<SpecificationsForNoteAddModel[]>(noteModel.NoteSpecifications);
                //добовляем характеристики
                foreach (var sp in specif)
                {
                    //если характеристика отсутствовала в БД, добовляем её
                    if (sp.SpecificationId == 0)
                    {
                        noteAdd.NoteSpecifications.Add(new NoteSpecification
                        {
                            Specification = new Specification
                            {
                                Id = sp.SpecificationId,
                                Title = sp.Title,
                                CategoryId = noteModel.CategoryId
                            },
                            SpecificationId = sp.SpecificationId,
                            Value = sp.Value,
                        });
                    }
                    else
                    {
                        noteAdd.NoteSpecifications.Add(new NoteSpecification
                        {
                            SpecificationId = sp.SpecificationId,
                            Value = sp.Value,
                        });
                    }
                }
            }         
            //добовляем запись в БД
            Database.Notes.Create(noteAdd);
            //сохраняем результат
            int result = await Database.SaveAsync();

            return result > 0 ? noteModel : null;
        }