public async Task CreateCaseTests() { AutoMapperConfig.RegisterMappings(typeof(CreateCaseInputViewModel).GetTypeInfo().Assembly); var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: "TestCreateCaseDb") .Options; using var dbContext = new ApplicationDbContext(options); dbContext.Cases.AddRange( new Case() { CaseNumber = "1", AttorneyId = "1", ClientId = "1", JudgeId = 1, TrusteeId = 1, DateFiled = DateTime.UtcNow, }); dbContext.SaveChanges(); using var casesRepository = new EfDeletableEntityRepository <Case>(dbContext); using var notesRepository = new EfDeletableEntityRepository <Note>(dbContext); var notesService = new NotesService(notesRepository); var casesService = new CasesService(casesRepository, notesService); var workingInput = new CreateCaseInputViewModel() { CaseNumber = "2", AttorneyId = "2", JudgeId = "2", TrusteeId = "2", DateFiled = DateTime.UtcNow, }; var duplicateCaseNumberInput = new CreateCaseInputViewModel() { CaseNumber = "1", AttorneyId = "2", JudgeId = "2", TrusteeId = "2", DateFiled = DateTime.UtcNow, }; var caseId = await casesService.CreateCaseAsync("newClient", workingInput); Assert.True(caseId is string); await Assert.ThrowsAsync <ArgumentException>( async() => { await casesService.CreateCaseAsync("newClient", duplicateCaseNumberInput); }); Assert.Equal(2, casesRepository.AllAsNoTracking().Count()); }
public async Task <string> CreateCaseAsync(string clientId, CreateCaseInputViewModel input) { var existingCase = this.casesRepository.AllAsNoTracking().FirstOrDefault(x => x.CaseNumber == input.CaseNumber); if (existingCase != null) { throw new ArgumentException("A case with this Case Number already exists"); } var mapper = AutoMapperConfig.MapperInstance; var newCase = mapper.Map <Case>(input); newCase.ClientId = clientId; await this.casesRepository.AddAsync(newCase); await this.casesRepository.SaveChangesAsync(); return(newCase.Id); }
public IActionResult Create(string message) { if (message != null) { this.ViewData["message"] = message; } else { this.ViewData["message"] = null; } var viewModel = new CreateCaseInputViewModel { Judges = this.judgesService.GetJudgesNamesAndIds(), Trustees = this.trusteeService.GetTrusteesNamesAndIds(), AttorneyId = this.User.FindFirstValue(ClaimTypes.NameIdentifier), // this.User.FindFirst(ClaimTypes.NameIdentifier).Value // this.userManager.GetUserAsync(this.user).Id }; return(this.View(viewModel)); }
public async Task <IActionResult> Create(string clientId, CreateCaseInputViewModel input) { if (!this.ModelState.IsValid) { // TODO: see why validation is not working return(this.View("Error", new ErrorViewModel() { RequestId = null })); } string caseId; try { caseId = await this.casesService.CreateCaseAsync(clientId, input); } catch (ArgumentException ex) { return(this.RedirectToAction("Create", new { message = ex.Message })); } return(this.RedirectToAction("CaseDetails", new { clientId, caseId })); }