public override async Task <TGetModel> OnHandle(RestPutRequest <TEntity, TGetModel> message, CancellationToken cancellationToken)
        {
            var obj = await OpinionatedDbContext.Set <TEntity>()
                      .SingleOrDefaultAsync(o => o.Id == message.Id);

            if (obj == null)
            {
                throw new EntityNotFoundException(typeof(TEntity), message.Id);
            }

            var properties = typeof(TEntity).GetProperties();

            foreach (var prop in message.Parameters)
            {
                var name  = prop.Key;
                var value = prop.Value;

                var property = properties.Single(p => p.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
                if (property == null)
                {
                    continue;
                }

                property.SetValue(obj, Convert.ChangeType(value, property.PropertyType));
            }

            await OpinionatedDbContext.SaveChangesAsync();

            return(Mapper.Map <TGetModel>(obj));
        }
Exemple #2
0
        public override async Task <TGetModel> OnHandle(RestPostRequest <TEntity, TPostModel, TGetModel> message, CancellationToken cancellationToken)
        {
            var newEntity = Mapper.Map <TEntity>(message.NewEntity);

            OpinionatedDbContext.Add(newEntity);
            await OpinionatedDbContext.SaveChangesAsync(cancellationToken);

            return(Mapper.Map <TGetModel>(newEntity));
        }
 public CreateJobRequestValidator(OpinionatedDbContext opinionatedDbContext)
     : base(opinionatedDbContext)
 {
     RuleFor(e => e.NewEntity.Description).NotEmpty().WithMessage("Description is required.");
     RuleFor(e => e.NewEntity.Number).NotEmpty().WithMessage("Number is required.");
     RuleFor(e => e.NewEntity.ProjectManagerId).NotEmpty().WithMessage("ProjectManagerId is required.")
     .DependentRules(rules => {
         rules.RuleFor(e => e.NewEntity.ProjectManagerId).MustAsync(ExistAsync <Employee>)
         .WithMessage("An existing Employee ID is required for ProjectManagerId.");
     });
 }
        public override async Task <TGetModel> OnHandle(RestSingleGetRequest <TEntity, TGetModel> message, CancellationToken cancellationToken)
        {
            var ret = await OpinionatedDbContext.Set <TEntity>()
                      .ProjectTo <TGetModel>(Mapper.ConfigurationProvider)
                      .SingleOrDefaultAsync(o => o.Id == message.Id);

            if (ret == null)
            {
                throw new EntityNotFoundException(typeof(TEntity), message.Id);
            }

            return(ret);
        }
        public override async Task <object> OnHandle(RestGetListRequest <TEntity, TGetModel> message, CancellationToken cancellationToken)
        {
            IQueryable <TEntity> results = OpinionatedDbContext.Set <TEntity>();

            if (message.UsePaging)
            {
                var page = await CreatePagedResultsAsync <TEntity, TGetModel>(results, message.PageNumber, message.NumberOfRecords, nameof(RestApiEntity.Id), true);

                return(page);
            }

            return(await results.ProjectTo <TGetModel>(Mapper.ConfigurationProvider).ToArrayAsync());
        }
        public override async Task <object> OnHandle(RestDeleteRequest <TEntity> message, CancellationToken cancellationToken)
        {
            var objectToRemove = await OpinionatedDbContext.Set <TEntity>().FindAsync(message.Id);

            if (objectToRemove == null)
            {
                throw new EntityNotFoundException(typeof(TEntity), message.Id);
            }

            OpinionatedDbContext.Remove(objectToRemove);
            await OpinionatedDbContext.SaveChangesAsync(cancellationToken);

            return(null);
        }
Exemple #7
0
 public RestPostHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IEnumerable <IValidator <RestPostRequest <TEntity, TPostModel, TGetModel> > > validators)
     : base(opinionatedDbContext, mapper, validators)
 {
 }
Exemple #8
0
 protected OpinionatedRestController(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IMediator mediator, RestControllerOptions restControllerOptions)
     : base(opinionatedDbContext, mapper, mediator)
 {
     RestControllerOptions = restControllerOptions;
 }
Exemple #9
0
 protected OpinionatedRestController(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IMediator mediator)
     : this(opinionatedDbContext, mapper, mediator, new RestControllerOptions {
     UsePaging = true
 })
 {
 }
Exemple #10
0
 public CreateEmployeeRequestValidator(OpinionatedDbContext opinionatedDbContext)
     : base(opinionatedDbContext)
 {
     RuleFor(e => e.NewEntity.FirstName).NotEmpty().WithMessage("First name is required.");
     RuleFor(e => e.NewEntity.LastName).NotEmpty().WithMessage("Last name is required.");
 }
Exemple #11
0
 public EmployeesController(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IMediator mediator)
     : base(opinionatedDbContext, mapper, mediator)
 {
 }
 public RestDeleteHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper)
     : base(opinionatedDbContext, mapper, null)
 {
 }
 public RestSingleGetHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper)
     : base(opinionatedDbContext, mapper, null)
 {
 }
Exemple #14
0
 public RestGetListHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IUrlHelperProvider urlHelperContainer)
     : base(opinionatedDbContext, mapper, null)
 {
     UrlHelper = urlHelperContainer.Url;
 }