public async Task <Result <AddPersonMaritalStatusResponse> > Handle(AddPersonMaritalStatusCommand request, CancellationToken cancellationToken)
        {
            try
            {
                using (_unitOfWork)
                {
                    //PersonMaritalStatus personMaritalStatus = new PersonMaritalStatus()
                    //{
                    //    PersonId = request.PersonId,
                    //    MaritalStatusId = request.MaritalStatusId,
                    //    Active = true,
                    //    DeleteFlag = false,
                    //    CreatedBy = request.UserId,
                    //    CreateDate = DateTime.Now
                    //};

                    //await _unitOfWork.Repository<PersonMaritalStatus>().AddAsync(personMaritalStatus);
                    //await _unitOfWork.SaveAsync();
                    RegisterPersonService personService = new RegisterPersonService(_unitOfWork);
                    var personMaritalStatus             = await personService.AddMaritalStatus(request.PersonId, request.MaritalStatusId, request.UserId);

                    _unitOfWork.Dispose();

                    return(Result <AddPersonMaritalStatusResponse> .Valid(new AddPersonMaritalStatusResponse()
                    {
                        PersonMaritalStatusId = personMaritalStatus.Id
                    }));
                }
            }
            catch (Exception e)
            {
                return(Result <AddPersonMaritalStatusResponse> .Invalid(e.Message));
            }
        }
        public async Task <IActionResult> Post([FromBody] AddPersonMaritalStatusCommand personMaritalStatusCommand)
        {
            var response = await _mediator.Send(personMaritalStatusCommand, Request.HttpContext.RequestAborted);

            if (response.IsValid)
            {
                return(Ok(response.Value));
            }
            return(BadRequest(response));
        }
        public async Task <Result <PersonMaritalStatus> > Handle(AddPersonMaritalStatusCommand request, CancellationToken cancellationToken)
        {
            using (_unitOfWork)
            {
                try
                {
                    PersonMaritalStatusService personMaritalStatusService = new PersonMaritalStatusService(_unitOfWork);
                    List <PersonMaritalStatus> personMaritalStatuses      = await personMaritalStatusService.GetPersonMaritalStatus(request.PersonId);

                    PersonMaritalStatus personMaritalStatus = new PersonMaritalStatus();
                    if (personMaritalStatuses.Count > 0)
                    {
                        personMaritalStatuses[0].MaritalStatusId = request.MaritalStatusId;
                        personMaritalStatus = await personMaritalStatusService.UpdatePersonMaritalStatus(personMaritalStatuses[0]);
                    }
                    else
                    {
                        PersonMaritalStatus maritalStatus = new PersonMaritalStatus()
                        {
                            PersonId        = request.PersonId,
                            MaritalStatusId = request.MaritalStatusId,
                            CreateDate      = DateTime.Now,
                            CreatedBy       = request.CreatedBy,
                            DeleteFlag      = false,
                            Active          = false
                        };
                        personMaritalStatus = await personMaritalStatusService.AddPersonMaritalStatus(maritalStatus);
                    }
                    return(Result <PersonMaritalStatus> .Valid(personMaritalStatus));
                }
                catch (Exception e)
                {
                    Log.Error(e.Message + " " + e.InnerException);
                    return(Result <PersonMaritalStatus> .Invalid(e.Message));
                }
            }
        }