public Task <string> Execute(CreateCaseNoteRequest request)
        {
            CaseNotesDocument doc = request.ToEntity();

            return(_processDataGateway.InsertCaseNoteDocument(doc));
        }
Ejemplo n.º 2
0
        //Handle case note creation exception like below for now
        public AddNewResidentResponse AddNewResident(AddNewResidentRequest request)
        {
            Address address = null;
            List <PersonOtherName> names = null;
            Person resident;
            List <dbPhoneNumber> phoneNumbers = null;

            try
            {
                resident = AddNewPerson(request);

                if (request.Address != null)
                {
                    address            = AddResidentAddress(request.Address, resident.Id, request.CreatedBy);
                    resident.Addresses = new List <Address> {
                        address
                    };
                }

                if (request.OtherNames?.Count > 0)
                {
                    names = AddOtherNames(request.OtherNames, resident.Id, request.CreatedBy);
                    resident.OtherNames = new List <PersonOtherName>();
                    resident.OtherNames.AddRange(names);
                }

                if (request.PhoneNumbers?.Count > 0)
                {
                    phoneNumbers          = AddPhoneNumbers(request.PhoneNumbers, resident.Id, request.CreatedBy);
                    resident.PhoneNumbers = new List <dbPhoneNumber>();
                    resident.PhoneNumbers.AddRange(phoneNumbers);
                }

                _databaseContext.Persons.Add(resident);
                _databaseContext.SaveChanges();
            }
            catch (DbUpdateException ex)
            {
                throw new ResidentCouldNotBeinsertedException(
                          $"Error with inserting resident record has occurred - {ex.Message}");
            }

            string caseNoteId           = null;
            string caseNoteErrorMessage = null;

            //Add note
            try
            {
                DateTime dt = DateTime.Now;

                CreatePersonCaseNote note = new CreatePersonCaseNote()
                {
                    FirstName       = resident.FirstName,
                    LastName        = resident.LastName,
                    MosaicId        = resident.Id.ToString(),
                    Timestamp       = dt.ToString("dd/MM/yyyy H:mm:ss"), //in line with imported form data
                    WorkerEmail     = request.CreatedBy,
                    Note            = $"{dt.ToShortDateString()} Person added - by {request.CreatedBy}.",
                    FormNameOverall = "API_Create_Person",
                    FormName        = "Person added",
                    CreatedBy       = request.CreatedBy
                };

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

                //TODO: refactor to appropriate pattern when using base API

                caseNoteId = _processDataGateway.InsertCaseNoteDocument(caseNotesDocument).Result;
            }
            catch (Exception ex)
            {
                caseNoteErrorMessage =
                    $"Unable to create a case note for creating a person {resident.Id}: {ex.Message}";
            }

            return(resident.ToResponse(address, names, phoneNumbers, caseNoteId, caseNoteErrorMessage));
        }