예제 #1
0
        public PostWarningNoteResponse PostWarningNote(PostWarningNoteRequest request)
        {
            var person = _databaseContext.Persons.FirstOrDefault(x => x.Id == request.PersonId);

            if (person == null)
            {
                throw new PersonNotFoundException($"Person with given id ({request.PersonId}) not found");
            }

            var warningNote = request.ToDatabaseEntity();

            _databaseContext.WarningNotes.Add(warningNote);
            _databaseContext.SaveChanges();

            var response = new PostWarningNoteResponse
            {
                WarningNoteId = warningNote.Id
            };

            // try
            // {
            var dt = DateTime.Now;

            var note = new WarningNoteCaseNote
            {
                FirstName       = person.FirstName,
                LastName        = person.LastName,
                MosaicId        = person.Id.ToString(),
                Timestamp       = dt.ToString("dd/MM/yyyy H:mm:ss"),
                Note            = $"{dt.ToShortDateString()} | Warning Note | Warning note created against this person",
                FormNameOverall = "API_WarningNote",
                FormName        = "Warning Note Created",
                WarningNoteId   = warningNote.Id.ToString(),
                WorkerEmail     = request.CreatedBy
            };

            var caseNotesDocument = new CaseNotesDocument
            {
                CaseFormData = JsonConvert.SerializeObject(note)
            };

            response.CaseNoteId = _processDataGateway.InsertCaseNoteDocument(caseNotesDocument).Result;
            // }
            // catch (Exception ex)
            // {
            //     _databaseContext.WarningNotes.Remove(warningNote);
            //     _databaseContext.SaveChanges();

            //     throw new PostWarningNoteException($"Unable to create a case note. Warning Note not created: {ex.Message}");
            // }

            return(response);
        }
 public IActionResult PostWarningNote([FromBody] PostWarningNoteRequest request)
 {
     try
     {
         var result = _warningNoteUseCase.ExecutePost(request);
         return(CreatedAtAction("CreateAllocation", result, result));
     }
     catch (PersonNotFoundException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
예제 #3
0
        public void PostWarningNoteReturns201WhenSuccessful()
        {
            var postWarningNoteResponse = _fixture.Create <PostWarningNoteResponse>();
            var postWarningNoteRequest  = new PostWarningNoteRequest();

            _mockWarningNoteUseCase
            .Setup(x => x.ExecutePost(postWarningNoteRequest))
            .Returns(postWarningNoteResponse);

            var response = _classUnderTest.PostWarningNote(postWarningNoteRequest) as CreatedAtActionResult;

            response?.StatusCode.Should().Be(201);
            response?.Value.Should().BeEquivalentTo(postWarningNoteResponse);
        }
        public void CanMapPostWarningNoteRequestToDatabaseObject()
        {
            long number = _faker.Random.Number();
            var  dt     = DateTime.Now;
            var  text   = _faker.Random.String();

            var request = new PostWarningNoteRequest
            {
                PersonId  = number,
                StartDate = dt,
                EndDate   = dt,
                DisclosedWithIndividual = true,
                DisclosedDetails        = text,
                Notes                    = text,
                ReviewDate               = dt,
                NextReviewDate           = dt,
                NoteType                 = text,
                DisclosedDate            = dt,
                DisclosedHow             = text,
                WarningNarrative         = text,
                ManagerName              = text,
                DiscussedWithManagerDate = dt,
                CreatedBy                = text
            };

            var expectedResponse = new dbWarningNote
            {
                PersonId  = number,
                StartDate = dt,
                EndDate   = dt,
                DisclosedWithIndividual = true,
                DisclosedDetails        = text,
                Notes                    = text,
                ReviewDate               = dt,
                NextReviewDate           = dt,
                NoteType                 = text,
                Status                   = "open",
                DisclosedDate            = dt,
                DisclosedHow             = text,
                WarningNarrative         = text,
                ManagerName              = text,
                DiscussedWithManagerDate = dt,
                CreatedBy                = text
            };

            var response = request.ToDatabaseEntity();

            response.Should().BeOfType <dbWarningNote>();
            response.Should().BeEquivalentTo(expectedResponse);
        }
        public void ExecutePostReturnsCorrectCaseNoteId()
        {
            var request = new PostWarningNoteRequest();

            var expectedResponse = new PostWarningNoteResponse()
            {
                CaseNoteId = _fixture.Create <string>()
            };

            _mockDatabaseGateway
            .Setup(x => x.PostWarningNote(
                       It.Is <PostWarningNoteRequest>(r => r == request)))
            .Returns(expectedResponse);

            var response = _classUnderTest.ExecutePost(request);

            response.CaseNoteId.Should().BeEquivalentTo(expectedResponse.CaseNoteId);
        }
 public static dbWarningNote ToDatabaseEntity(this PostWarningNoteRequest request)
 {
     return(new dbWarningNote
     {
         PersonId = request.PersonId,
         StartDate = request.StartDate,
         EndDate = request.EndDate,
         ReviewDate = request.ReviewDate,
         NextReviewDate = request.NextReviewDate,
         DisclosedWithIndividual = request.DisclosedWithIndividual,
         DisclosedDetails = request.DisclosedDetails,
         Notes = request.Notes,
         NoteType = request.NoteType,
         Status = "open",
         DisclosedDate = request.DisclosedDate,
         DisclosedHow = request.DisclosedHow,
         WarningNarrative = request.WarningNarrative,
         ManagerName = request.ManagerName,
         DiscussedWithManagerDate = request.DiscussedWithManagerDate,
         CreatedBy = request.CreatedBy
     });
 }
 public PostWarningNoteResponse ExecutePost(PostWarningNoteRequest request)
 {
     return(_databaseGateway.PostWarningNote(request));
 }