public ActionResult Add_Moa(MOAAdd input)
 {
     try
     {
         string mou_id = Session["mou_detail_id"].ToString();
         moa.addMOA(input, int.Parse(mou_id));
         return(Json("", JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json("", JsonRequestBehavior.AllowGet));
     }
 }
示例#2
0
        public void addMOA(MOAAdd input, int mou_id)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    //add MOA
                    //add MOAPartner =>
                    //update PartnerScope =>
                    //add MOAPartnerScope
                    //add MOAStatusHistory
                    DateTime moa_end_date = DateTime.ParseExact(input.MOABasicInfo.moa_end_date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    MOA      m            = db.MOAs.Add(new MOA
                    {
                        moa_code     = input.MOABasicInfo.moa_code,
                        moa_end_date = moa_end_date,
                        moa_note     = input.MOABasicInfo.moa_note,
                        mou_id       = mou_id,
                        account_id   = 1,
                        add_time     = DateTime.Now,
                        is_deleted   = false
                    });
                    //checkpoint 1
                    db.SaveChanges();

                    foreach (MOAPartnerInfo item in input.MOAPartnerInfo.ToList())
                    {
                        db.MOAPartners.Add(new MOAPartner
                        {
                            moa_id         = m.moa_id,
                            moa_start_date = DateTime.ParseExact(item.sign_date_moa_add, "dd/MM/yyyy", CultureInfo.InvariantCulture),
                            partner_id     = item.partner_id
                        });
                        foreach (int scopeItem in item.coop_scope_add.ToList())
                        {
                            PartnerScope ps = db.PartnerScopes.Where(x => x.partner_id == item.partner_id && x.scope_id == scopeItem).First();
                            ps.reference_count -= 1;

                            db.Entry(ps).State = EntityState.Modified;
                            db.MOAPartnerScopes.Add(new MOAPartnerScope
                            {
                                partner_scope_id = ps.partner_scope_id,
                                moa_id           = m.moa_id
                            });
                        }
                        //checkpoint 2
                        db.SaveChanges();
                    }
                    db.MOAStatusHistories.Add(new MOAStatusHistory
                    {
                        datetime      = DateTime.Now,
                        reason        = input.MOABasicInfo.reason,
                        moa_id        = m.moa_id,
                        mou_status_id = 2
                    });
                    //checkpoint 3
                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }