public async Task PolicyInUse()
        {
            var PolicyCoverageSvc = GetService <IPolicyCoverageService>();
            var payload           = new DeletePolicyCoveragePayload {
                PolicyCoverageId = 1
            };
            var response = await PolicyCoverageSvc.DeletePolicyCoverageAsync(payload);

            Assert.AreEqual(null, response.Data);
            Assert.AreEqual(false, response.Success);
            Assert.AreNotEqual(null, response.Message);
            Assert.AreEqual(ApiMessageType.Error, response.MessageType);
            Assert.AreEqual(DeletePolicyCoverageStatus.PolicyInUse, response.StatusCode);
        }
        public async Task DeletePolicyCoverageOk()
        {
            var PolicyCoverageSvc = GetService <IPolicyCoverageService>();
            var payload           = new DeletePolicyCoveragePayload {
                PolicyCoverageId = 11
            };
            var response = await PolicyCoverageSvc.DeletePolicyCoverageAsync(payload);

            var expectedMsg = InsuranceResources.Get("DeletePolicyCoverageOk");

            Assert.AreEqual(payload.PolicyCoverageId, response.Data.PolicyCoverageId);
            Assert.AreNotEqual(null, response.Data.CoverageDescription);
            Assert.AreNotEqual(0, response.Data.Percentage);
            Assert.AreEqual(expectedMsg, response.Message);
            Assert.AreEqual(ApiMessageType.Success, response.MessageType);
            Assert.AreEqual(DeletePolicyCoverageStatus.DeletePolicyCoverageOk, response.StatusCode);
            Assert.AreEqual(true, response.Success);
        }
        public async Task <ApiResponse <PolicyCoverageDto, DeletePolicyCoverageStatus> > DeletePolicyCoverageAsync(DeletePolicyCoveragePayload payload)
        {
            StartLog();
            ApiResponse <PolicyCoverageDto, DeletePolicyCoverageStatus> response;

            if (!Validate(payload, out string message, out string property))
            {
                response = Error <DeletePolicyCoverageStatus>(message, property);
                EndLog();
                return(response);
            }

            var policyCoverage = await GetPolicyCoverageById(payload.PolicyCoverageId);

            if (policyCoverage == null)
            {
                response = Error(DeletePolicyCoverageStatus.PolicyCoverageIdNotFound);
                EndLog();
                return(response);
            }

            var usage = await _clientPolicySvc.CheckPolicyUsageAsync(
                new CheckPolicyUsagePayload { PolicyId = policyCoverage.PolicyId });

            if (usage.Data.IsInUse)
            {
                response = Error(DeletePolicyCoverageStatus.PolicyInUse);
                EndLog();
                return(response);
            }

            await SaveAsync(ApiChangeAction.Delete, policyCoverage);

            response = Ok <PolicyCoverageDto, DeletePolicyCoverageStatus>(policyCoverage, DeletePolicyCoverageStatus.DeletePolicyCoverageOk);
            EndLog();

            return(response);
        }