public async Task <DatumModel> UpdateAsync(string stuffId, DatumModel input) { input.CheckDatum(); if (stuffId != input.Id) { throw new ArgumentException("Corrupted data."); } TUser dbUserAuth = await _userAuth.GetCurrentUserAsync("updated datum"); TStuff dbStuff = await _context.TStuff.FirstOrDefaultAsync(x => x.StfId.Equals(stuffId)); if (dbStuff == null || dbStuff.StfUserId != dbUserAuth.UsrId) { throw new ArgumentException("Corrupted data."); } // Update stuff dbStuff = input.ToUpdate(dbStuff); await _context.SaveChangesAsync(); // Attach user to the stuff for the response dbStuff.StfUser = dbUserAuth; var result = dbStuff.ToDatumModel(); return(result); }
public async Task <DatumModel> CreateAsync(DatumModel input) { input.CheckDatum(); TStuff dbStuff = input.ToCreate(); TUser dbUserAuth = await _userAuth.GetCurrentUserAsync("created datum"); TUser dbUser = await _context.TUser.FirstOrDefaultAsync(x => x.UsrId.Equals(dbUserAuth.UsrId)); if (dbUser == null) { // Create and attach new user dbUserAuth.UsrCreatedAt = DateTime.UtcNow.ToStrDate(); dbStuff.StfUser = dbUserAuth; } // Attach foreign key dbStuff.StfUserId = dbUserAuth.UsrId; // Create stuff await _context.TStuff.AddAsync(dbStuff); await _context.SaveChangesAsync(); // Attach user to the stuff for the response dbStuff.StfUser = dbUserAuth; var result = dbStuff.ToDatumModel(); return(result); }
public async Task StuffRepo_SearchListAsync_ShouldThrow_ArgumentException() { // Arrange _context.Add(_dbUser); var dbStuffList = new List <TStuff>(); for (int idx = 0; idx < 7; idx++) { var tmpStuff = new TStuff { StfId = _dbStuff.StfId + (idx + 1), StfUserId = _dbStuff.StfUserId, StfLabel = _dbStuff.StfLabel }; dbStuffList.Add(tmpStuff); } _context.AddRange(dbStuffList); _context.SaveChanges(); // Act var repoResult = _stuffRepo.SearchListAsync("LABEL"); var exception = await Record.ExceptionAsync(() => repoResult); // Assert Assert.NotNull(exception); Assert.IsType <ArgumentException>(exception); Assert.Equal("Too many results. Please narrow your search.", exception.Message); }
public static TStuff ToUpdate(this DatumModel input, TStuff result) { result.StfId = input.Id; result.StfLabel = input.Label; result.StfDescription = input.Description; result.StfOtherInfo = input.OtherInfo; result.StfUpdatedAt = DateTime.UtcNow.ToStrDate(); return(result); }
public async Task DeleteAsync(string stuffId) { TUser dbUserAuth = await _userAuth.GetCurrentUserAsync("deleted datum"); TStuff dbStuff = await _context.TStuff.FirstOrDefaultAsync(x => x.StfId.Equals(stuffId)); if (dbStuff == null || dbStuff.StfUserId != dbUserAuth.UsrId) { throw new ArgumentException("Corrupted data."); } _context.TStuff.Remove(dbStuff); await _context.SaveChangesAsync(); }
public static DatumModel ToDatumModel(this TStuff input) { var result = input == null ? null : new DatumModel { Id = input.StfId, Label = input.StfLabel, Description = input.StfDescription, OtherInfo = input.StfOtherInfo, CreatedAt = input.StfCreatedAt.ToUtcDate(), UpdatedAt = input.StfUpdatedAt.ToUtcDate(), User = input.StfUser.ToUserModel() }; return(result); }
public async Task <DatumModel> ReadAsync(string stuffId) { // Get the stuff and its user TStuff dbStuff = await _context.TStuff .Where(x => x.StfId.Equals(stuffId)) .Include(x => x.StfUser) .FirstOrDefaultAsync(); if (dbStuff == null) { throw new NotFoundException("Stuff not found."); } var result = dbStuff.ToDatumModel(); return(result); }