public static INS_UWD_POLICY_HEAD SaveEndsmntCancl(INS_UWD_POLICY_HEAD viewPolh)
        {
            var db     = new SibaModel();
            var dbPolh = db.INS_UWD_POLICY_HEAD.Find(viewPolh.POLH_SYS_ID);

            if (dbPolh != null)
            {
                //update of policy header details

                dbPolh.Map(viewPolh);

                /*----------------
                 * risk update
                 *--------------*/
                foreach (var risk in viewPolh.INS_UDW_LIABILITY)
                {
                    var dbrisk = db.INS_UDW_LIABILITY.Find(risk.LIA_SYS_ID);
                    switch (risk.LIA_STATUS)
                    {
                    case "A":
                        if (dbrisk != null)
                        {
                            db.INS_UDW_LIABILITY.Attach(dbrisk);
                            dbrisk.Map(risk);
                        }

                        break;

                    case "U":
                        risk.LIA_STATUS      = "A";
                        risk.LIA_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                        db.INS_UDW_LIABILITY.Add(risk);

                        break;

                    case "D":
                        db.INS_UDW_LIABILITY.Remove(db.INS_UDW_LIABILITY.Find(risk.LIA_SYS_ID));
                        break;
                    }
                }

                foreach (var fee in viewPolh.INS_UDW_POL_FEES)
                {
                    var dbFee = db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID);
                    switch (fee.POL_FEE_STATUS)
                    {
                    case "A":
                        if (dbFee != null)
                        {
                            db.INS_UDW_POL_FEES.Attach(dbFee);
                            dbFee.Map(fee);
                        }

                        break;

                    case "U":
                        fee.POL_FEE_STATUS     = "A";
                        fee.POL_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                        db.INS_UDW_POL_FEES.Add(fee);

                        break;

                    case "D":
                        db.INS_UDW_POL_FEES.Remove(db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID));
                        break;
                    }
                }
            }
            db.SaveChanges();
            return(viewPolh);
        }
Esempio n. 2
0
        public static INS_UWD_POLICY_HEAD save_policy(INS_UWD_POLICY_HEAD viewPolh)
        {
            var db = new SibaModel();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var dbPolh = db.INS_UWD_POLICY_HEAD.Find(viewPolh.POLH_SYS_ID);
                    switch (viewPolh.POLH_STATUS)
                    {
                    case "A":
                    {
                        //policy header before update

                        if (dbPolh != null)
                        {
                            //update of policy header details
                            db.INS_UWD_POLICY_HEAD.Attach(dbPolh);
                            dbPolh.Map(viewPolh);

                            /*--------------------------------
                            * travel head
                            *-------------------------------*/
                            foreach (var trah in viewPolh.INS_UDW_TRAVEL_RISK_HEAD)
                            {
                                trah.TRAH_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                switch (trah.TRAH_STATUS)
                                {
                                case "A":
                                    var dbveh = db.INS_UDW_TRAVEL_RISK_HEAD.Find(trah.TRAH_SYS_ID);
                                    db.INS_UDW_TRAVEL_RISK_HEAD.Attach(dbveh);

                                    dbveh.Map(trah);
                                    break;

                                case "U":
                                    trah.TRAH_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                    trah.TRAH_STATUS      = "A";
                                    db.INS_UDW_TRAVEL_RISK_HEAD.Add(trah);
                                    break;

                                case "D":
                                    db.INS_UDW_TRAVEL_RISK_HEAD.Remove(db.INS_UDW_TRAVEL_RISK_HEAD.Find(trah.TRAH_SYS_ID));
                                    break;
                                }
                            }

                            /*--------------------------------
                            * travel
                            *-------------------------------*/

                            foreach (var bon in viewPolh.INS_UDW_TRAVEL_RISK)
                            {
                                var dbbon = db.INS_UDW_TRAVEL_RISK.Find(bon.TRA_SYS_ID);
                                switch (bon.TRA_STATUS)
                                {
                                case "A":
                                    if (dbbon != null)
                                    {
                                        db.INS_UDW_TRAVEL_RISK.Attach(dbbon);
                                        dbbon.Map(bon);

                                        /*--------------------------------
                                        * Risk Covers
                                        *-------------------------------*/

                                        foreach (var cover in bon.INS_UWD_RISK_COVERS)
                                        {
                                            var dbcovers = db.INS_UWD_RISK_COVERS.Find(cover.RCOV_SYS_ID);
                                            switch (cover.RCOV_STATUS)
                                            {
                                            case "A":
                                                if (dbcovers != null)
                                                {
                                                    db.INS_UWD_RISK_COVERS.Attach(dbcovers);
                                                    dbcovers.Map(cover);
                                                    dbcovers.RCOV_MOD_DATE = DateTime.Now;
                                                }
                                                break;

                                            case "U":
                                                cover.RCOV_STATUS      = "A";
                                                cover.RCOV_MOD_DATE    = DateTime.Now;
                                                cover.RCOV_RISK_SYS_ID = bon.TRA_SYS_ID;
                                                db.INS_UWD_RISK_COVERS.Add(cover);
                                                break;

                                            case "D":
                                                if (dbcovers != null)
                                                {
                                                    db.INS_UWD_RISK_COVERS.Attach(dbcovers);
                                                    dbcovers.RCOV_STATUS   = "D";
                                                    dbcovers.RCOV_MOD_DATE = DateTime.Now;
                                                }
                                                break;
                                            }
                                        }
                                    }
                                    break;

                                case "U":
                                    bon.TRA_STATUS      = "A";
                                    bon.TRA_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_UDW_TRAVEL_RISK.Add(bon);
                                    break;

                                case "D":
                                    db.INS_UDW_TRAVEL_RISK.Remove(db.INS_UDW_TRAVEL_RISK.Find(bon.TRA_SYS_ID));
                                    break;
                                }
                            }

                            foreach (var fee in viewPolh.INS_UDW_POL_FEES)
                            {
                                var dbFee = db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID);
                                switch (fee.POL_FEE_STATUS)
                                {
                                case "A":
                                    if (dbFee != null)
                                    {
                                        db.INS_UDW_POL_FEES.Attach(dbFee);
                                        dbFee.Map(fee);
                                    }

                                    break;

                                case "U":
                                    fee.POL_FEE_STATUS     = "A";
                                    fee.POL_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_UDW_POL_FEES.Add(fee);

                                    break;

                                case "D":
                                    db.INS_UDW_POL_FEES.Remove(db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID));
                                    break;
                                }
                            }

                            foreach (var fees in viewPolh.INS_UDW_TRAVEL_FEES)
                            {
                                var dbrkfees = db.INS_UDW_TRAVEL_FEES.Find(fees.TRA_FEE_SYS_ID);
                                switch (fees.TRA_FEE_STATUS)
                                {
                                case "A":
                                    if (dbrkfees != null)
                                    {
                                        db.INS_UDW_TRAVEL_FEES.Attach(dbrkfees);
                                        dbrkfees.Map(fees);
                                    }
                                    break;

                                case "U":
                                    fees.TRA_FEE_STATUS     = "A";
                                    fees.TRA_FEE_CRTE_DATE  = DateTime.Now;
                                    fees.TRA_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_UDW_TRAVEL_FEES.Add(fees);
                                    break;

                                case "D":
                                    if (dbrkfees != null)
                                    {
                                        db.INS_UDW_TRAVEL_FEES.Attach(dbrkfees);
                                        dbrkfees.TRA_FEE_STATUS = "D";
                                    }
                                    break;
                                }
                            }

                            db.SaveChanges();
                        }
                    }
                    break;

                    case "U":

                        viewPolh.POLH_STATUS = "A";
                        //viewPolh.POLH_DISPLAY_NO = viewPolh.POLH_CMP_CODE + viewPolh.POLH_SUB_CLASS_CODE + viewPolh.POLH_SYS_ID;
                        viewPolh.POLH_QUT_SER_NO = viewPolh.POLH_SYS_ID;

                        /*-----------------------------------------
                         * updating the status of related tables
                         *---------------------------------------*/
                        viewPolh.INS_UDW_TRAVEL_RISK.ForEach(x => {
                            x.TRA_STATUS = "A";
                            x.INS_UWD_RISK_COVERS.ForEach(c => c.RCOV_STATUS = "A");
                        });

                        viewPolh.INS_UDW_TRAVEL_RISK_HEAD.ForEach(x => x.TRAH_STATUS = "A");

                        db.INS_UWD_POLICY_HEAD.Add(viewPolh);

                        db.SaveChanges();

                        /*---------------------------------
                         * create premium register record
                         *-------------------------------*/

                        db.INS_PREMIUM_REGISTER.Add(new INS_PREMIUM_REGISTER
                        {
                            PR_ACCT_YN       = "Y",
                            PR_BC_AMOUNT     = viewPolh.POLH_POL_PREM_BC,
                            PR_BUS_SOURCE    = viewPolh.POLH_BIZ_SOURCE,
                            PR_COB           = viewPolh.POLH_CLASS_CODE,
                            PR_CRTE_BY       = viewPolh.POLH_CRTE_BY,
                            PR_CRTE_DATE     = DateTime.Now.Date,
                            PR_CURRENCY      = viewPolh.POLH_CURRENCY,
                            PR_CUST_ACCT     = CustomerMdl.get_customer(viewPolh.POLH_CUST_CODE).CUS_TYPE_CODE,
                            PR_CUST_CODE     = viewPolh.POLH_CUST_CODE,
                            PR_END_NO        = (int?)viewPolh.POLH_END_NO,
                            PR_FC_AMOUNT     = viewPolh.POLH_POL_PREM_FC,
                            PR_FX_RATE       = viewPolh.POLH_CURRENCY_RATE,
                            PR_INS_SOURCE    = viewPolh.POLH_INS_SOURCE,
                            PR_OFFICE        = viewPolh.POLH_OFF_CODE,
                            PR_POL_SYS_ID    = viewPolh.POLH_SYS_ID,
                            PR_POST_DATE     = null,
                            PR_STATUS        = "A",
                            PR_TTY_SOURCE    = null,
                            PR_TXN_REF       = (int)SystemConstants.UnderwritingPremium,
                            PR_UWD_ACCT_TYPE = viewPolh.POLH_INS_SOURCE
                        });

                        break;

                    case "D":
                    {
                        /*--------------------------
                         * update of policy details
                         *------------------------*/
                        //
                        if (dbPolh != null)
                        {
                            db.INS_UWD_POLICY_HEAD.Attach(dbPolh);
                            dbPolh.POLH_STATUS = "D";
                        }
                    }
                    break;
                    }
                    db.SaveChanges();
                    trans.Commit();
                    return(new INS_UWD_POLICY_HEAD
                    {
                        POLH_SYS_ID = viewPolh.POLH_SYS_ID,
                        POLH_END_NO = viewPolh.POLH_END_NO,
                        POLH_STATUS = viewPolh.POLH_STATUS,
                        POLH_POL_STATE = viewPolh.POLH_POL_STATE,
                        POLH_TXN_STATE = viewPolh.POLH_TXN_STATE,
                        POLH_DISPLAY_NO = viewPolh.POLH_DISPLAY_NO,
                        POLH_QUT_SER_NO = viewPolh.POLH_QUT_SER_NO
                    });
                }
                catch (Exception)
                {
                    trans.Rollback();
                    throw;
                }
            }
        }
        public static INS_UWD_POLICY_HEAD save_policy(INS_UWD_POLICY_HEAD viewPolh)
        {
            var db = new SibaModel();

            using (var trans = db.Database.BeginTransaction())
            {
                try
                {
                    var dbPolh = db.INS_UWD_POLICY_HEAD.Find(viewPolh.POLH_SYS_ID);
                    switch (viewPolh.POLH_STATUS)
                    {
                    case "A":
                    {
                        //policy header before update

                        if (dbPolh != null)
                        {
                            //update of policy header details
                            db.INS_UWD_POLICY_HEAD.Attach(dbPolh);
                            dbPolh.Map(viewPolh);

                            /*--------------------------------
                            * Risk
                            *-------------------------------*/

                            foreach (var risk in viewPolh.INS_UDW_LIABILITY)
                            {
                                var dbrisk = db.INS_UDW_LIABILITY.Find(risk.LIA_SYS_ID);
                                switch (risk.LIA_STATUS)
                                {
                                case "A":
                                    if (dbrisk != null)
                                    {
                                        db.INS_UDW_LIABILITY.Attach(dbrisk);
                                        dbrisk.Map(risk);

                                        /*--------------------------------
                                        * Risk Covers
                                        *-------------------------------*/
                                        foreach (var cover in risk.INS_UWD_RISK_COVERS)
                                        {
                                            var dbcovers = db.INS_UWD_RISK_COVERS.Find(cover.RCOV_SYS_ID);
                                            switch (cover.RCOV_STATUS)
                                            {
                                            case "A":
                                                if (dbcovers != null)
                                                {
                                                    db.INS_UWD_RISK_COVERS.Attach(dbcovers);
                                                    dbcovers.Map(cover);
                                                    dbcovers.RCOV_MOD_DATE = DateTime.Now;
                                                }
                                                break;

                                            case "U":
                                                cover.RCOV_STATUS      = "A";
                                                cover.RCOV_MOD_DATE    = DateTime.Now;
                                                cover.RCOV_RISK_SYS_ID = risk.LIA_SYS_ID;
                                                db.INS_UWD_RISK_COVERS.Add(cover);
                                                break;

                                            case "D":
                                                if (dbcovers != null)
                                                {
                                                    db.INS_UWD_RISK_COVERS.Attach(dbcovers);
                                                    dbcovers.RCOV_STATUS   = "D";
                                                    dbcovers.RCOV_MOD_DATE = DateTime.Now;
                                                }
                                                break;
                                            }
                                        }

                                        /*--------------------------------
                                        * Risk Fees
                                        *-------------------------------*/
                                        foreach (var fees in risk.INS_UDW_LIABILITY_FEES)
                                        {
                                            var dbrkfees = db.INS_UDW_LIABILITY_FEES.Find(fees.LIA_FEE_SYS_ID);
                                            switch (fees.LIA_FEE_STATUS)
                                            {
                                            case "A":
                                                if (dbrkfees != null)
                                                {
                                                    db.INS_UDW_LIABILITY_FEES.Attach(dbrkfees);
                                                    dbrkfees.Map(fees);
                                                }
                                                break;

                                            case "U":
                                                fees.LIA_FEE_STATUS    = "A";
                                                fees.LIA_FEE_CRTE_DATE = DateTime.Now;
                                                fees.LIA_FEE_RK_SYS_ID = risk.LIA_SYS_ID;
                                                db.INS_UDW_LIABILITY_FEES.Add(fees);
                                                break;

                                            case "D":
                                                if (dbrkfees != null)
                                                {
                                                    db.INS_UDW_LIABILITY_FEES.Attach(dbrkfees);
                                                    dbrkfees.LIA_FEE_STATUS = "D";
                                                }
                                                break;
                                            }
                                        }
                                    }

                                    break;

                                case "U":
                                    risk.LIA_STATUS      = "A";
                                    risk.LIA_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_UDW_LIABILITY.Add(risk);
                                    break;

                                case "D":
                                    db.INS_UDW_LIABILITY.Remove(db.INS_UDW_LIABILITY.Find(risk.LIA_SYS_ID));
                                    break;
                                }
                            }

                            /*--------------------------------
                            * Policy Fees
                            *-------------------------------*/
                            foreach (var fee in viewPolh.INS_UDW_POL_FEES)
                            {
                                var dbFee = db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID);
                                switch (fee.POL_FEE_STATUS)
                                {
                                case "A":
                                    if (dbFee != null)
                                    {
                                        db.INS_UDW_POL_FEES.Attach(dbFee);
                                        dbFee.Map(fee);
                                    }

                                    break;

                                case "U":
                                    fee.POL_FEE_STATUS     = "A";
                                    fee.POL_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_UDW_POL_FEES.Add(fee);

                                    break;

                                case "D":
                                    db.INS_UDW_POL_FEES.Remove(db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID));
                                    break;
                                }
                            }

                            /*--------------------------------
                            * Risk Fees
                            *-------------------------------*/
                            //foreach (var fees in viewPolh.INS_UDW_BOND_FEES)
                            //{
                            //    var dbrkfees = db.INS_UDW_BOND_FEES.Find(fees.BOND_FEE_SYS_ID);
                            //    switch (fees.BOND_FEE_STATUS)
                            //    {
                            //        case "A":
                            //            if (dbrkfees != null)
                            //            {
                            //                db.INS_UDW_BOND_FEES.Attach(dbrkfees);
                            //                dbrkfees.Map(fees);
                            //            }
                            //            break;

                            //        case "U":
                            //            fees.BOND_FEE_STATUS = "A";
                            //            fees.BOND_FEE_CRTE_DATE = DateTime.Now;
                            //            fees.BOND_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                            //            db.INS_UDW_BOND_FEES.Add(fees);
                            //            break;

                            //        case "D":
                            //            if (dbrkfees != null)
                            //            {
                            //                db.INS_UDW_BOND_FEES.Attach(dbrkfees);
                            //                dbrkfees.BOND_FEE_STATUS = "D";
                            //            }
                            //            break;
                            //    }
                            //}

                            /*-------------------------------
                             * FAC Inward/Co-insurance Member
                             *-------------------------------*/
                            foreach (var facIn in viewPolh.INS_RI_FAC_INWARD)
                            {
                                var dbFacIn = db.INS_RI_FAC_INWARD.Find(facIn.FINW_SYS_ID);
                                switch (facIn.FINW_STATUS)
                                {
                                case "A":
                                    if (dbFacIn != null)
                                    {
                                        db.INS_RI_FAC_INWARD.Attach(dbFacIn);
                                        dbFacIn.Map(facIn);

                                        /*----------------
                                         * Participating Companies
                                         *--------------*/
                                        foreach (var pap in facIn.INS_RI_FAC_INW_COMPANY)
                                        {
                                            var dbcover = db.INS_RI_FAC_INW_COMPANY.Find(pap.FINW_PAP_SYS_ID);

                                            switch (pap.FINW_PAP_STATUS)
                                            {
                                            case "A":
                                                if (dbcover != null)
                                                {
                                                    db.INS_RI_FAC_INW_COMPANY.Attach(dbcover);
                                                    dbcover.Map(pap);
                                                }

                                                break;

                                            case "U":
                                                pap.FINW_PAP_STATUS = "A";
                                                db.INS_RI_FAC_INW_COMPANY.Add(pap);
                                                break;

                                            case "D":
                                                db.INS_RI_FAC_INW_COMPANY.Remove(db.INS_RI_FAC_INW_COMPANY.Find(pap.FINW_PAP_SYS_ID));
                                                break;
                                            }
                                        }
                                    }

                                    break;

                                case "U":
                                    facIn.FINW_STATUS      = "A";
                                    facIn.FINW_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_RI_FAC_INWARD.Add(facIn);

                                    break;

                                case "D":
                                    db.INS_RI_FAC_INWARD.Remove(db.INS_RI_FAC_INWARD.Find(facIn.FINW_SYS_ID));
                                    break;
                                }
                            }


                            /*-------------------------------
                             * FAC Outward/Co-insurance Leader
                             *--------------------------------*/
                            foreach (var facout in viewPolh.INS_RI_FAC_OUTWARD)
                            {
                                var dbFacOut = db.INS_RI_FAC_OUTWARD.Find(facout.FOTW_SYS_ID);
                                switch (facout.FOTW_STATUS)
                                {
                                case "A":
                                    if (dbFacOut != null)
                                    {
                                        db.INS_RI_FAC_OUTWARD.Attach(dbFacOut);
                                        dbFacOut.Map(facout);
                                    }

                                    break;

                                case "U":
                                    facout.FOTW_STATUS      = "A";
                                    facout.FOTW_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                                    db.INS_RI_FAC_OUTWARD.Add(dbFacOut);

                                    break;

                                case "D":
                                    db.INS_RI_FAC_OUTWARD.Remove(db.INS_RI_FAC_OUTWARD.Find(facout.FOTW_SYS_ID));
                                    break;
                                }
                            }

                            //db.SaveChanges();
                        }
                    }

                    break;

                    case "U":

                        viewPolh.POLH_STATUS = "A";
                        //viewPolh.POLH_DISPLAY_NO = viewPolh.POLH_CMP_CODE + viewPolh.POLH_SUB_CLASS_CODE + viewPolh.POLH_SYS_ID;
                        viewPolh.POLH_QUT_SER_NO = viewPolh.POLH_SYS_ID;

                        /*-----------------------------------------
                         * updating the status of related tables
                         *---------------------------------------*/
                        viewPolh.INS_UDW_LIABILITY.ForEach(x => {
                            x.LIA_STATUS = "A";
                            x.INS_UWD_RISK_COVERS.ForEach(c => c.RCOV_STATUS = "A");
                        });

                        db.INS_UWD_POLICY_HEAD.Add(viewPolh);

                        db.SaveChanges();

                        /*---------------------------------
                         * create premium register record
                         *-------------------------------*/

                        db.INS_PREMIUM_REGISTER.Add(new INS_PREMIUM_REGISTER
                        {
                            PR_ACCT_YN       = "Y",
                            PR_BC_AMOUNT     = viewPolh.POLH_POL_PREM_BC,
                            PR_BUS_SOURCE    = viewPolh.POLH_BIZ_SOURCE,
                            PR_COB           = viewPolh.POLH_CLASS_CODE,
                            PR_CRTE_BY       = viewPolh.POLH_CRTE_BY,
                            PR_CRTE_DATE     = DateTime.Now.Date,
                            PR_CURRENCY      = viewPolh.POLH_CURRENCY,
                            PR_CUST_ACCT     = CustomerMdl.get_customer(viewPolh.POLH_CUST_CODE).CUS_TYPE_CODE,
                            PR_CUST_CODE     = viewPolh.POLH_CUST_CODE,
                            PR_END_NO        = (int?)viewPolh.POLH_END_NO,
                            PR_FC_AMOUNT     = viewPolh.POLH_POL_PREM_FC,
                            PR_FX_RATE       = viewPolh.POLH_CURRENCY_RATE,
                            PR_INS_SOURCE    = viewPolh.POLH_INS_SOURCE,
                            PR_OFFICE        = viewPolh.POLH_OFF_CODE,
                            PR_POL_SYS_ID    = viewPolh.POLH_SYS_ID,
                            PR_POST_DATE     = null,
                            PR_STATUS        = "A",
                            PR_TTY_SOURCE    = null,
                            PR_TXN_REF       = (int)SystemConstants.UnderwritingPremium,
                            PR_UWD_ACCT_TYPE = viewPolh.POLH_INS_SOURCE
                        });

                        break;

                    case "D":
                    {
                        /*--------------------------
                         * update of policy details
                         *------------------------*/
                        //
                        if (dbPolh != null)
                        {
                            db.INS_UWD_POLICY_HEAD.Attach(dbPolh);
                            dbPolh.POLH_STATUS = "D";
                        }
                    }
                    break;
                    }
                    db.SaveChanges();
                    trans.Commit();
                    return(new INS_UWD_POLICY_HEAD
                    {
                        POLH_SYS_ID = viewPolh.POLH_SYS_ID,
                        POLH_END_NO = viewPolh.POLH_END_NO,
                        POLH_STATUS = viewPolh.POLH_STATUS,
                        POLH_POL_STATE = viewPolh.POLH_POL_STATE,
                        POLH_TXN_STATE = viewPolh.POLH_TXN_STATE,
                        POLH_DISPLAY_NO = viewPolh.POLH_DISPLAY_NO,
                        POLH_QUT_SER_NO = viewPolh.POLH_QUT_SER_NO
                    });
                }
                catch (Exception)
                {
                    trans.Rollback();
                    throw;
                }
            }
        }
        public static INS_UWD_POLICY_HEAD SaveEndsmntCancl(INS_UWD_POLICY_HEAD viewPolh)
        {
            var db     = new SibaModel();
            var dbPolh = db.INS_UWD_POLICY_HEAD.Find(viewPolh.POLH_SYS_ID);

            if (dbPolh != null)
            {
                //update of policy header details
                //db.INS_UWD_POLICY_HEAD.Attach(dbPolh);
                dbPolh.Map(viewPolh);

                /*----------------
                 * motor update
                 *--------------*/
                foreach (var veh in viewPolh.INS_UWD_VEHICLE_RISK)
                {
                    var dbveh = db.INS_UWD_VEHICLE_RISK.Find(veh.VEH_SYS_ID);
                    switch (veh.VEH_STATUS)
                    {
                    case "A":
                        if (dbveh != null)
                        {
                            db.INS_UWD_VEHICLE_RISK.Attach(dbveh);
                            dbveh.Map(veh);
                        }

                        break;

                    case "U":
                        veh.VEH_STATUS      = "A";
                        veh.VEH_POLH_SYS_ID = viewPolh.POLH_SYS_ID;
                        db.INS_UWD_VEHICLE_RISK.Add(veh);

                        break;

                    case "D":
                        db.INS_UWD_VEHICLE_RISK.Remove(db.INS_UWD_VEHICLE_RISK.Find(veh.VEH_SYS_ID));
                        break;
                    }
                }

                foreach (var fee in viewPolh.INS_UDW_POL_FEES)
                {
                    var dbFee = db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID);
                    switch (fee.POL_FEE_STATUS)
                    {
                    case "A":
                        if (dbFee != null)
                        {
                            db.INS_UDW_POL_FEES.Attach(dbFee);
                            dbFee.Map(fee);
                        }

                        break;

                    case "U":
                        fee.POL_FEE_STATUS     = "A";
                        fee.POL_FEE_POL_SYS_ID = viewPolh.POLH_SYS_ID;
                        db.INS_UDW_POL_FEES.Add(fee);

                        break;

                    case "D":
                        db.INS_UDW_POL_FEES.Remove(db.INS_UDW_POL_FEES.Find(fee.POL_FEE_SYS_ID));
                        break;
                    }
                }
            }
            db.SaveChanges();
            return(viewPolh);
        }