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)); } }
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; } } }