public object Save([FromBody] CLM_EST_HEAD estimations)
 {
     try
     {
         ClaimEstimationFireMdl.save_estimation(estimations);
         return(new { state = true, message = "Estimation successfully Saved" });
     }
     catch (Exception e)
     {
         return(new { state = false, message = e });
     }
 }
Ejemplo n.º 2
0
        public static bool save_estimation(CLM_EST_HEAD polhClaim)
        {
            var db = new SibaModel();

            switch (polhClaim.CLM_STATUS)
            {
            case "A":
            {
                //estimation before update
                var dbProd = db.CLM_EST_HEAD.Find(polhClaim.CLM_SYS_ID);

                if (dbProd != null)
                {
                    //update of estimation details
                    db.CLM_EST_HEAD.Attach(dbProd);
                    dbProd.Map(polhClaim);

                    /*--------------------------------
                    * ESTIMATION RISK
                    *-------------------------------*/
                    foreach (var risk in polhClaim.CLM_EST_TRAVEL_RISK_DTLS)
                    {
                        risk.CLM_RISK_CLM_SYS_ID = polhClaim.CLM_SYS_ID;
                        switch (risk.CLM_RISK_STATUS)
                        {
                        case "A":            //we have a risk in the database which we have to update
                            var dbriskdtls = db.CLM_EST_TRAVEL_RISK_DTLS.Find(risk.CLM_RISK_SYS_ID);
                            db.CLM_EST_TRAVEL_RISK_DTLS.Attach(dbriskdtls);
                            dbriskdtls.Map(risk);
                            break;

                        case "U":            //add new risk
                            risk.CLM_RISK_CLM_SYS_ID = polhClaim.CLM_SYS_ID;
                            risk.CLM_RISK_STATUS     = "A";
                            risk.CLM_RISK_CRTE_DATE  = DateTime.Now;
                            db.CLM_EST_TRAVEL_RISK_DTLS.Add(risk);
                            break;

                        case "D":            //
                            db.CLM_EST_TRAVEL_RISK_DTLS.Attach(db.CLM_EST_TRAVEL_RISK_DTLS.Find(risk.CLM_RISK_SYS_ID));

                            break;
                        }
                    }

                    /*-------------------------------
                     * ESTIMATION DETAILS
                     *-----------------------------*/
                    foreach (var estimate in polhClaim.CLM_EST_DTLS)
                    {
                        estimate.CLM_EST_CLM_SYS_ID = polhClaim.CLM_SYS_ID;
                        switch (estimate.CLM_EST_STATUS)
                        {
                        case "A":
                            //
                            var dbestimate = db.CLM_EST_DTLS.Find(estimate.CLM_EST_SYS_ID);

                            if (dbestimate != null)
                            {
                                db.CLM_EST_DTLS.Attach(dbestimate);
                                dbestimate.Map(estimate);

                                //ESTIMATION EXPENSE UPDATE
                                foreach (var expense in estimate.CLM_EST_EXPENSE)
                                {
                                    var dbExpense = db.CLM_EST_EXPENSE.Find(expense.CLM_EXP_SYS_ID);
                                    switch (expense.CLM_EXP_STATUS)
                                    {
                                    case "A":
                                        if (dbExpense != null)
                                        {
                                            db.CLM_EST_EXPENSE.Attach(dbExpense);
                                            dbExpense.Map(expense);
                                            dbExpense.CLM_EXP_MOD_DATE = DateTime.Now;
                                        }
                                        break;

                                    case "U":
                                        expense.CLM_EXP_STATUS         = "A";
                                        expense.CLM_EXP_CRTE_DATE      = DateTime.Now;
                                        expense.CLM_EXP_CLM_EST_SYS_ID = estimate.CLM_EST_SYS_ID;
                                        db.CLM_EST_EXPENSE.Add(expense);
                                        break;

                                    case "D":
                                        if (dbExpense != null)
                                        {
                                            db.CLM_EST_EXPENSE.Attach(dbExpense);
                                            dbExpense.CLM_EXP_STATUS    = "D";
                                            dbExpense.CLM_EXP_CRTE_DATE = DateTime.Now;
                                            db.CLM_EST_EXPENSE.Remove(db.CLM_EST_EXPENSE.Find(expense.CLM_EXP_SYS_ID));
                                        }
                                        break;
                                    }
                                }
                            }


                            break;

                        case "U":
                            //
                            estimate.CLM_EST_STATUS = "A";
                            db.CLM_EST_DTLS.Add(estimate);
                            break;

                        case "D":
                            //deletion from the database that were not in the update estimate from the view
                            db.CLM_EST_DTLS.Attach(db.CLM_EST_DTLS.Find(estimate.CLM_EST_SYS_ID));
                            break;
                        }
                    }
                }
            }
            break;

            case "U":

            {
                polhClaim.CLM_STATUS    = "A";
                polhClaim.CLM_CRTE_DATE = DateTime.Now;
                db.CLM_EST_HEAD.Add(polhClaim);

                polhClaim.CLM_EST_TRAVEL_RISK_DTLS.ForEach(x => x.CLM_RISK_STATUS = "A");
                polhClaim.CLM_EST_DTLS.ForEach(x => x.CLM_EST_STATUS = "A");
            }


            break;

            case "D":
            {
                /*------------------------
                 * Estimation before update
                 *----------------------*/
                //
                var dbProd = db.CLM_EST_HEAD.Find(polhClaim.CLM_SYS_ID);

                /*------------------------
                 * update of Estimation details
                 *----------------------*/
                //
                if (dbProd != null)
                {
                    db.CLM_EST_HEAD.Attach(dbProd);
                    dbProd.CLM_STATUS = "D";
                }
            }
            break;
            }

            return(db.SaveChanges() > 0);
        }