public async Task <(PackModel, ValidationResult)> Create(PackForModificationModel packForModificationModel) { // We need to validate that the model is valid var validator = new PackForModificationValidator(); var validatorResult = await validator.ValidateAsync(packForModificationModel); if (!validatorResult.IsValid) { return(null, validatorResult); } // All is ok we can add the object var pack = new Pack { Name = packForModificationModel.Name, Description = packForModificationModel.Description, CreatedOnDateTimeOffsetUtc = DateTimeOffset.UtcNow, LastModifiedDateTimeOffsetUtc = DateTimeOffset.UtcNow }; _dbContext.Add(pack); await _dbContext.SaveChangesAsync(); return(pack.ToPackModel(), null); }
public async Task <IActionResult> CreatePack([FromBody] PackForModificationModel packForModificationModel) { var(pack, validationResult) = await _packService.Create(packForModificationModel); if (validationResult != null) { return(BadRequest(validationResult)); } return(Ok(pack)); }
public async Task <IActionResult> EditPack([FromRoute] Guid id, [FromBody] PackForModificationModel packForModificationModel) { var(pack, validationResult, serviceResult) = await _packService.Edit(id, packForModificationModel); switch (serviceResult) { case Enums.ServiceResult.NotFound: return(NotFound()); case Enums.ServiceResult.Ok: default: if (validationResult != null) { return(BadRequest(validationResult)); } return(Ok(pack)); } }
public async Task <(PackModel, ValidationResult, Enums.ServiceResult)> Edit(Guid id, PackForModificationModel packForModification) { // Try to get the pack var pack = await _dbContext.Packs.FirstOrDefaultAsync(w => w.Id == id); if (pack == null) { return(null, null, Enums.ServiceResult.NotFound); } // We need to validate that the model is valid var validator = new PackForModificationValidator(); var validatorResult = await validator.ValidateAsync(packForModification); if (!validatorResult.IsValid) { return(null, validatorResult, Enums.ServiceResult.Ok); } // All is ok we can update the object pack.Name = packForModification.Name; pack.Description = packForModification.Description; // Update the last modify only if the object has changed if (_dbContext.ChangeTracker.HasChanges()) { pack.LastModifiedDateTimeOffsetUtc = DateTimeOffset.UtcNow; } await _dbContext.SaveChangesAsync(); return(pack.ToPackModel(), null, Enums.ServiceResult.Ok); }