Пример #1
0
        public async Task <ArticleModel> Handle(SaveArticle request, CancellationToken cancellationToken)
        {
            if (_appContext.User.Role != Role.Master)
            {
                throw new ForbiddenException();
            }

            Nmedian?nmedian = null;

            if (request.Model.NmedianId.HasValue)
            {
                nmedian = await _dbContext.Nmedians
                          .SingleOrDefaultAsync(x => x.Uuid == request.Model.NmedianId.Value, cancellationToken)
                          ?? throw new NotFoundException(nameof(request.Model.NmedianId));
            }

            Article entity;

            if (request.Id.HasValue)
            {
                entity = await _dbContext.Articles
                         .SingleOrDefaultAsync(x => x.Uuid == request.Id.Value, cancellationToken)
                         ?? throw new NotFoundException();

                entity.Updated = _dateTimeOffset.Now;
            }
            else
            {
                entity = new Article
                {
                    Created = _dateTimeOffset.Now,
                    Uuid    = _guid.NewGuid()
                };

                _dbContext.Articles.Add(entity);
            }

            entity.Categories = request.Model.Categories
                                ?.Select(category => Enum.Parse <Category>(category))
                                .Distinct()
                                .ToArray();
            entity.Content   = request.Model.Content.CleanTrim();
            entity.Nmedian   = nmedian;
            entity.NmedianId = nmedian?.Id;
            entity.Picture   = request.Model.Picture?.CleanTrim();
            entity.Published = request.Model.Published;
            entity.Title     = request.Model.Title?.CleanTrim() ?? throw new InvalidOperationException("The Title is required.");

            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <ArticleModel>(entity));
        }
Пример #2
0
        public async Task <Unit> Handle(DeleteArticle request, CancellationToken cancellationToken)
        {
            Article entity = await _dbContext.Articles
                             .SingleOrDefaultAsync(x => x.Uuid == request.Id, cancellationToken)
                             ?? throw new NotFoundException();

            if (_appContext.User.Role != Role.Master)
            {
                throw new ForbiddenException();
            }

            _dbContext.Articles.Remove(entity);
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
Пример #3
0
        public async Task <NmedianModel> Handle(SaveNmedian request, CancellationToken cancellationToken)
        {
            if (_appContext.User.Role != Role.Master)
            {
                throw new ForbiddenException();
            }

            Nmedian entity;

            if (request.Id.HasValue)
            {
                entity = await _dbContext.Nmedians
                         .SingleOrDefaultAsync(x => x.Uuid == request.Id.Value, cancellationToken)
                         ?? throw new NotFoundException();

                entity.Updated = _dateTimeOffset.Now;
            }
            else
            {
                entity = new Nmedian
                {
                    Created = _dateTimeOffset.Now,
                    Uuid    = _guid.NewGuid()
                };

                _dbContext.Nmedians.Add(entity);
            }

            entity.Age        = request.Model.Age;
            entity.Hired      = request.Model.Hired;
            entity.HourlyRate = request.Model.HourlyRate;
            entity.IsActive   = request.Model.IsActive;
            entity.JobTitle   = request.Model.JobTitle == null
        ? (JobTitle?)null
        : Enum.Parse <JobTitle>(request.Model.JobTitle);
            entity.Name    = request.Model.Name?.CleanTrim() ?? throw new InvalidOperationException("The Name is required.");
            entity.Picture = request.Model.Picture?.CleanTrim();
            entity.Slug    = request.Model.Slug?.CleanTrim();

            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <NmedianModel>(entity));
        }