private ExMOAAdd handlingExMOADetailData(List <ExtraMOA> mouExList)
        {
            ExMOAAdd newObj = new ExMOAAdd();

            newObj.ExMOABasicInfo      = new ExMOABasicInfo();
            newObj.PartnerScopeInfoMOA = new List <PartnerScopeInfoMOA>();
            //Partner
            foreach (ExtraMOA item in mouExList.ToList())
            {
                newObj.ExMOABasicInfo.ex_moa_code      = item.moa_bonus_code;
                newObj.ExMOABasicInfo.ex_moa_end_date  = item.moa_bonus_end_date.ToString("dd'/'MM'/'yyyy");
                newObj.ExMOABasicInfo.ex_moa_sign_date = item.moa_bonus_decision_date.ToString("dd'/'MM'/'yyyy");
                PartnerScopeInfoMOA p = newObj.PartnerScopeInfoMOA.Find(x => x.partner_id == item.partner_id);
                if (p == null)
                {
                    PartnerScopeInfoMOA obj = new PartnerScopeInfoMOA();
                    obj.partner_id = item.partner_id;
                    obj.scopes_id  = new List <int>();
                    obj.scopes_id.Add(item.scope_id);
                    obj.scopes_name  = item.scope_abbreviation;
                    obj.partner_name = item.partner_name;
                    newObj.PartnerScopeInfoMOA.Add(obj);
                }
                else
                {
                    p.scopes_id.Add(item.scope_id);
                    p.scopes_name += "," + item.scope_abbreviation;
                }
            }
            return(newObj);
        }
 public ExMOAAdd getExtraMOADetail(int moa_id, int moa_bonus_id)
 {
     try
     {
         string sql_moaEx =
             @"select t1.moa_bonus_code, t1.moa_bonus_decision_date,t1.moa_bonus_end_date,
                 t4.partner_name,t5.scope_abbreviation,t1.evidence,t1.moa_id,t1.moa_bonus_id,
                 t5.scope_id,t4.partner_id
                 from IA_Collaboration.MOABonus t1 left join 
                 IA_Collaboration.MOAPartnerScope t2 on 
                 t1.moa_bonus_id = t2.moa_bonus_id inner join 
                 IA_Collaboration.PartnerScope t3 on
                 t3.partner_scope_id = t2.partner_scope_id
                 inner join 
                 IA_Collaboration.Partner t4 on t4.partner_id = t3.partner_id
                 inner join IA_Collaboration.CollaborationScope t5 on t5.scope_id = t3.scope_id
                 where t1.moa_id = @moa_id and t1.moa_bonus_id = @moa_bonus_id order by partner_id";
         List <ExtraMOA> moaExList = db.Database.SqlQuery <ExtraMOA>(sql_moaEx
                                                                     , new SqlParameter("moa_id", moa_id)
                                                                     , new SqlParameter("moa_bonus_id", moa_bonus_id)).ToList();
         ExMOAAdd moaEx = handlingExMOADetailData(moaExList);
         return(moaEx);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 public ActionResult ViewExMOADetail(int moa_bonus_id)
 {
     try
     {
         string   moa_id = Session["moa_detail_id"].ToString();
         ExMOAAdd mouObj = moa.getExtraMOADetail(int.Parse(moa_id), moa_bonus_id);
         return(Json(mouObj, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(new HttpStatusCodeResult(400));
     }
 }
 public ActionResult Edit_Ex_Moa(ExMOAAdd input)
 {
     try
     {
         string id = Session["moa_detail_id"].ToString();
         moa.editExtraMOA(input, int.Parse(id));
         return(Json("", JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json("", JsonRequestBehavior.AllowGet));
     }
 }
        public void editExtraMOA(ExMOAAdd input, int moa__id)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    //edit MOABonus
                    //MOABonu mb = db.MOABonus.Find(moa_bonus_id);
                    //mb.moa_bonus_code = input.moa_bonus_code;
                    //mb.moa_bonus_decision_date = input.moa_bonus_decision_date;
                    //mb.moa_bonus_end_date = input.moa_bonus_end_date;
                    //mb.moa_id = input.moa_id;
                    //mb.evidence = input.evidence;
                    //db.Entry(mb).State = EntityState.Modified;

                    //finding old exScope of exMOA.
                    //List<MOAPartnerScope> exList = db.MOAPartnerScopes.Where(x => x.moa_bonus_id == moa_bonus_id).ToList();
                    //exList.Clear();
                    //db.Entry(exList).State = EntityState.Modified;

                    //add new record of MOAPartnerScope
                    //foreach (CustomPartner cp in input.ListPartnerExMOA.ToList())
                    //{
                    //    foreach (CustomScope cs in cp.ListScopeExMOU.ToList())
                    //    {
                    //        MOAPartnerScope m = new MOUPartnerScope();
                    //        m.mou_id = input.moa_id;
                    //        m.partner_id = cp.partner_id;
                    //        m.scope_id = cs.scope_id;
                    //        m.mou_bonus_id = moa_bonus_id;
                    //        db.MOUPartnerScopes.Add(m);
                    //    }
                    //}

                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }
 public void addExtraMOA(ExMOAAdd input, int moa_id)
 {
     using (DbContextTransaction transaction = db.Database.BeginTransaction())
     {
         try
         {
             DateTime sign_date = DateTime.ParseExact(input.ExMOABasicInfo.ex_moa_sign_date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
             DateTime end_date  = DateTime.ParseExact(input.ExMOABasicInfo.ex_moa_end_date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
             //add MOABonus
             MOABonu objMOABonusAdded = db.MOABonus.Add(new MOABonu
             {
                 moa_bonus_code          = input.ExMOABasicInfo.ex_moa_code,
                 moa_bonus_decision_date = sign_date,
                 moa_bonus_end_date      = end_date,
                 moa_id   = moa_id,
                 evidence = ""
             });
             db.SaveChanges();
             //check PartnerScope and add MOAPartnerScope.
             foreach (PartnerScopeInfoMOA psMOA in input.PartnerScopeInfoMOA.ToList())
             {
                 foreach (int scopeItem in psMOA.scopes_id.ToList())
                 {
                     int          partner_scope_id_item = 0;
                     PartnerScope psCheck = db.PartnerScopes.Where(x => x.partner_id == psMOA.partner_id && x.scope_id == scopeItem).First();
                     if (psCheck == null)
                     {
                         PartnerScope psAdded = db.PartnerScopes.Add(new PartnerScope
                         {
                             partner_id      = psMOA.partner_id,
                             scope_id        = scopeItem,
                             reference_count = 1
                         });
                         partner_scope_id_item = psAdded.partner_scope_id;
                     }
                     else
                     {
                         partner_scope_id_item    = psCheck.partner_scope_id;
                         psCheck.reference_count += 1;
                     }
                     db.SaveChanges();
                     //add to MOAPartnerScope
                     db.MOAPartnerScopes.Add(new MOAPartnerScope
                     {
                         partner_scope_id = partner_scope_id_item,
                         moa_id           = moa_id,
                         moa_bonus_id     = objMOABonusAdded.moa_bonus_id
                     });
                     db.SaveChanges();
                 }
             }
             db.SaveChanges();
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             throw ex;
         }
     }
 }