コード例 #1
0
        public async Task <EditorDocument> Create(DocumentCreateOrUpdateInput input)
        {
            var itemToInsert = Mapper.Map <EditorDocument>(input);

            if (string.IsNullOrEmpty(itemToInsert.Title))
            {
                itemToInsert.Title = await GenerateDocumentTitle();
            }
            else
            {
                var hasSameTitleDocument = await HasSameTitleDocument(itemToInsert.Title);

                if (hasSameTitleDocument)
                {
                    Response.StatusCode = (int)HttpStatusCode.Conflict;
                    return(null);
                }
            }

            itemToInsert.UserId = JwtReader.GetUserId();
            itemToInsert.DocumentAccess ??= EditorDocumentAllowedAccess.Private;
            var item = await Repository.AddAsync(itemToInsert);

            await Context.SaveChangesAsync();

            return(item.Entity);
        }
コード例 #2
0
        public async Task <EditorDocument> Update(DocumentCreateOrUpdateInput input)
        {
            if (!input.Id.HasValue || input.Id == Guid.Empty)
            {
                throw new ArgumentException(nameof(input.Id));
            }

            var item = await Get(input.Id.Value);

            item.Title = input.Title;
            if (!input.Title.Equals(item.Title))
            {
                var hasSameTitleDocument = await HasSameTitleDocument(item.Title);

                if (hasSameTitleDocument)
                {
                    Response.StatusCode = (int)HttpStatusCode.Conflict;
                    return(null);
                }
            }
            item.Description    = input.Description;
            item.DocumentAccess = input.AllowedAccess;
            var result = Repository.Update(item);
            await Context.SaveChangesAsync();

            return(result.Entity);
        }
コード例 #3
0
        public async Task <EditorDocument> Update([FromBody] DocumentCreateOrUpdateInput input)
        {
            if (!input.Id.HasValue || input.Id == Guid.Empty)
            {
                throw new ArgumentException(nameof(input.Id));
            }

            var item = await Repository.Include(d => d.Tags).FirstOrDefaultAsync(d => d.Id == input.Id.Value);

            item.Title = input.Title;
            if (!input.Title.Equals(item.Title))
            {
                var hasSameTitleDocument = await HasSameTitleDocument(item.Title);

                if (hasSameTitleDocument)
                {
                    Response.StatusCode = (int)HttpStatusCode.Conflict;
                    return(null);
                }
            }
            item.Description    = input.Description;
            item.DocumentAccess = input.AllowedAccess ?? EditorDocumentAllowedAccess.Private;
            item.LastUpdateTime = DateTime.Now;

            input.Tags ??= new List <Tags>();
            item.Tags ??= new List <Tags>();
            var tagsToAdd = input.Tags.Where(t => !item.Tags.Any(ct => ct.TagName.Equals(t.TagName))).ToList();

            foreach (var tag in tagsToAdd)
            {
                item.Tags.Add(tag);
            }
            var tagsToRemove = item.Tags.Where(t => !input.Tags.Any(ct => ct.TagName.Equals(t.TagName))).ToList();

            foreach (var tag in tagsToRemove)
            {
                item.Tags.Remove(tag);
            }
            var result = Repository.Update(item);
            await Context.SaveChangesAsync();

            return(result.Entity);
        }