Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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 }));
        }