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)); }
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); }
public RestPostHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IEnumerable <IValidator <RestPostRequest <TEntity, TPostModel, TGetModel> > > validators) : base(opinionatedDbContext, mapper, validators) { }
protected OpinionatedRestController(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IMediator mediator, RestControllerOptions restControllerOptions) : base(opinionatedDbContext, mapper, mediator) { RestControllerOptions = restControllerOptions; }
protected OpinionatedRestController(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IMediator mediator) : this(opinionatedDbContext, mapper, mediator, new RestControllerOptions { UsePaging = true }) { }
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."); }
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) { }
public RestGetListHandler(OpinionatedDbContext opinionatedDbContext, IMapper mapper, IUrlHelperProvider urlHelperContainer) : base(opinionatedDbContext, mapper, null) { UrlHelper = urlHelperContainer.Url; }