public ApiPolicyCoverageDetailModel MapPolicyCoverageDetailCommonModel(PolicyCoverageDetailModel coverage)
 {
     return(new ApiPolicyCoverageDetailModel()
     {
         ID = coverage.ID,
         CoverageID = coverage.CoverageID,
         CoverageValue = coverage.CoverageValue,
         InsuranceID = coverage.InsuranceID,
         Note = coverage.Note,
         TotalPolicyValue = coverage.TotalPolicyValue
     });
 }
        //Record Insurance
        public bool Record(InsuranceModel insurance, ClientModel client, PolicyCoverageDetailModel policyCoverage, DocumentModel document, CoverageModel coverage)
        {
            InsuranceModel.InsuranceTypes type = insurance.InsuranceType;
            switch (type)
            {
            case InsuranceModel.InsuranceTypes.MOTOR_INSURANCE:
                return(RecordNewMotorInsurance(insurance, client, policyCoverage, document, coverage));

            case InsuranceModel.InsuranceTypes.LIFE_INSURANCE:
                return(RecordNewLifeInsurance(insurance, client, policyCoverage, document, coverage));

            default: return(false);
            }
            //_repository.Create(InsuranceModel insurance, ClientModel client, PolicyCoverageDetailModel policyCoverage, DocumentModel document, CoverageModel coverage);
        }
        public HttpResponseMessage AddInsurance([FromBody] ApiInsuranceModel insurance)
        {
            //Mapping Api Models to Common Models
            APIModelMapper mapper = new APIModelMapper();

            InsuranceModel            selectedInsurance = mapper.MapInsuranceTypeModel(insurance.InsuranceType, insurance, insurance.SelectedInsurance);
            ClientModel               client            = mapper.MapClientModel(insurance.Client);
            PolicyCoverageDetailModel policyCoverage    = mapper.MapPolicyCoverageDetailModel(insurance.PolicyDetails);
            DocumentModel             document          = mapper.MapDocumentModel(insurance.Documents);
            CoverageModel             coverage          = mapper.MapCoverage(insurance.Coverage);

            if (_insuranceManager.Record(selectedInsurance, client, policyCoverage, document, coverage))
            {
                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            return(new HttpResponseMessage(HttpStatusCode.BadRequest));
        }
        public ApiInsuranceModel Get(String insuranceId)
        {
            /* ApiInsuranceModel insurance = new ApiInsuranceModel
             * {
             *   //ID = (int)ID,
             *   //AgentID = 1,
             *   //ClientID = 1,
             *   //Joining_Date = new DateTime(2000, 02, 29),
             *   //End_Date = new DateTime(2017, 02, 29),
             *   //Total_Value = 1000000,
             * };
             *
             * return insurance;*/

            InsuranceModel            selectedInsurance = _insuranceManager.Find <InsuranceModel>(e => e.ID.Equals(insuranceId));
            ClientModel               clientModel       = _insuranceManager.Find <ClientModel>(e => e.ID.Equals(selectedInsurance.ID));
            DocumentModel             document          = _insuranceManager.Find <DocumentModel>(e => e.InsuranceID.Equals(selectedInsurance.ID));
            PolicyCoverageDetailModel pcd      = _insuranceManager.Find <PolicyCoverageDetailModel>(e => e.InsuranceID.Equals(selectedInsurance.ID));
            CoverageModel             coverage = _insuranceManager.Find <CoverageModel>(e => e.ID.Equals(pcd.CoverageID));

            CommonToApiModelMapper mapper = new CommonToApiModelMapper();
            ApiInsuranceModel      mapped = new ApiInsuranceModel();

            if (selectedInsurance.InsuranceType.Equals(InsuranceModel.InsuranceTypes.LIFE_INSURANCE))
            {
                LifeInsuranceModel    life = _insuranceManager.Find <LifeInsuranceModel>(e => e.ClientID.Equals(selectedInsurance.ClientID));
                ApiLifeInsuranceModel apiLifeInsuranceModel = mapper.MapLifeInsuranceCommonModel(life);
                mapped.SelectedInsurance = apiLifeInsuranceModel;
            }
            ApiClientModel               apiCLient   = mapper.MapClientCommonModel(clientModel);
            ApiDocumentModel             apiDoc      = mapper.MapDocumentCommonModel(document);
            ApiPolicyCoverageDetailModel apiPcd      = mapper.MapPolicyCoverageDetailCommonModel(pcd);
            ApiCoverageModel             apiCoverage = mapper.MapCoverageCommonModel(coverage);

            mapped.Client        = apiCLient;
            mapped.Coverage      = apiCoverage;
            mapped.Documents     = apiDoc;
            mapped.PolicyDetails = apiPcd;

            return(mapped);
        }
        //Business Logics for Motor Insurance
        private bool RecordNewMotorInsurance(InsuranceModel insurance, ClientModel client, PolicyCoverageDetailModel policyCoverage, DocumentModel document, CoverageModel coverage)
        {
            ValidateAddInsurance validation = new ValidateAddInsurance();
            bool isCorrectAge = validation.ValidateForAge(client.Age);

            //_repository.Create(InsuranceModel insurance, ClientModel client, PolicyCoverageDetailModel policyCoverage, DocumentModel document, CoverageModel coverage);
            throw new NotImplementedException();
        }
        //Business Logics for Life Insurance
        private bool RecordNewLifeInsurance(InsuranceModel insurance, ClientModel client, PolicyCoverageDetailModel policyCoverage, DocumentModel document, CoverageModel coverage)
        {
            ValidateAddInsurance validation = new ValidateAddInsurance();
            bool isCorrectAge  = validation.ValidateForAge(client.Age);
            bool isClientAdded = _repository.Create(client);

            if (isClientAdded)
            {
                bool isInsuranceAdded = _repository.Create(insurance);
                if (isInsuranceAdded)
                {
                    bool isDocumentAdded = _repository.Create(document);
                    if (isDocumentAdded)
                    {
                        bool isCoverageAdded = _repository.Create(coverage);
                        if (isCoverageAdded)
                        {
                            bool isPolicyCoverageAdded = _repository.Create(policyCoverage);
                            if (isPolicyCoverageAdded)
                            {
                                return(_repository.Save());
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }