public async Task <(TEditEntityDto entityDto, TEntity entity)> Put(string id, TEditEntityDto entityDto, DbContext context, IResourceMandatoryPredicateFactory <TEntity, TKey> mandatoryPredicateFactory, List <IEntityCorrector <TEntity, TCreateEntityDto, TEditEntityDto, TKey> > correctors) { var foundEntity = await GetById(id, context, mandatoryPredicateFactory.GetMandatoryPredicates()); if (foundEntity == null) { throw new EntityNotFoundException(); } _mapper.Map(entityDto, foundEntity); var correctorContext = new EntityCorrectorContext { OperationKind = CrudOperationKind.Put }; await correctors.CorrectEditEntityAsync(correctorContext, foundEntity, entityDto); context.Set <TEntity>().Update(foundEntity); await context.SaveChangesAsync(); foundEntity = await GetById(id, context, mandatoryPredicateFactory.GetMandatoryPredicates()); entityDto = _mapper.Map <TEditEntityDto>(foundEntity); await correctors.CorrectEditEntityDtoAsync(correctorContext, entityDto, foundEntity); return(entityDto, foundEntity); }
public async Task <(TEditEntityDto entityDto, TEntity entity)> Post(TCreateEntityDto entityDto, DbContext context, List <IEntityCorrector <TEntity, TCreateEntityDto, TEditEntityDto, TKey> > correctors) { var entity = _mapper.Map <TEntity>(entityDto); _logger.LogInformation("Start add the new entity {entity} with id {id}", entity, entity.Id); var correctorContext = new EntityCorrectorContext { OperationKind = CrudOperationKind.Post }; await correctors.CorrectCreateEntityAsync(correctorContext, entity, entityDto); context.Set <TEntity>().Add(entity); await context.SaveChangesAsync(); var savedDto = _mapper.Map <TEditEntityDto>(entity); await correctors.CorrectEditEntityDtoAsync(correctorContext, savedDto, entity); return(savedDto, entity); }
public static async Task CorrectEditEntityDtoAsync <TEntity, TCreateEntityDto, TEditEntityDto, TKey>( this List <IEntityCorrector <TEntity, TCreateEntityDto, TEditEntityDto, TKey> > correctors, EntityCorrectorContext context, TEditEntityDto receivedEditEntityDto, TEntity entity) where TEntity : BaseEntity <TKey> where TKey : struct where TCreateEntityDto : class where TEditEntityDto : class { foreach (var entityCorrector in correctors) { await entityCorrector.CorrectEntityDtoAsync(context, receivedEditEntityDto, entity); } }
public Task CorrectEntityDtoAsync(EntityCorrectorContext context, TEditEntityDto entityDto, BaseEntity <TKey> entity) { return(Task.CompletedTask); }
public Task CorrectEntityAsync(EntityCorrectorContext context, BaseEntity <TKey> entity, TEditEntityDto receivedEntityDto) { ((ITenantedEntity)entity).TenantId = _tenantInfoProvider.GetCurrentTenantId() ?? Guid.Empty; return(Task.CompletedTask); }