public ActionResult Edit_Moa_Partner(MOAPartnerEdited input)
 {
     try
     {
         string id = Session["moa_detail_id"].ToString();
         moa.editMOAPartner(input, int.Parse(id));
         return(Json("", JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         return(Json("", JsonRequestBehavior.AllowGet));
     }
 }
Beispiel #2
0
        public void editMOAPartner(MOAPartnerEdited input, int moa_id)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    DateTime sign_date = DateTime.ParseExact(input.sign_date_string, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    //edit MOAPartner
                    MOAPartner mp = db.MOAPartners.Where(x => x.moa_partner_id == input.moa_partner_id).First();
                    mp.moa_start_date  = sign_date;
                    mp.partner_id      = db.Partners.Where(x => x.partner_name == input.partner_name).First().partner_id;
                    db.Entry(mp).State = EntityState.Modified;
                    db.SaveChanges();

                    //get old records of PartnerScope in MOA
                    string sql_old_partnerScope   = @"select t1.partner_scope_id,partner_id,scope_id from IA_Collaboration.PartnerScope t1 inner join 
                        IA_Collaboration.MOAPartnerScope t2 on
                        t1.partner_scope_id = t2.partner_scope_id
                        where moa_id = @moa_id";
                    List <PartnerScope> listOldPS = db.Database.SqlQuery <PartnerScope>(sql_old_partnerScope,
                                                                                        new SqlParameter("moa_id", moa_id)).ToList();

                    //reset old records of scopes of partner.
                    foreach (PartnerScope token in listOldPS.ToList())
                    {
                        PartnerScope objPS = db.PartnerScopes.Where(x => x.partner_scope_id == token.partner_scope_id).First();
                        //decrese refer_count in PartnerScope
                        objPS.reference_count -= 1;
                        db.Entry(objPS).State  = EntityState.Modified;

                        //delete record of MOUPartnerScope.
                        db.MOAPartnerScopes.Remove(db.MOAPartnerScopes.Where(x => x.partner_scope_id == token.partner_scope_id).First());
                    }

                    //add new records of scopes of partner.
                    foreach (int tokenScope in input.scopes.ToList())
                    {
                        PartnerScope objPS            = db.PartnerScopes.Where(x => x.partner_id == mp.partner_id && x.scope_id == tokenScope).FirstOrDefault();
                        int          partner_scope_id = 0;
                        if (objPS == null) //add new to PartnerScope
                        {
                            db.PartnerScopes.Add(new PartnerScope
                            {
                                partner_id      = mp.partner_id,
                                scope_id        = tokenScope,
                                reference_count = 0
                            });
                            //checkpoint 3
                            db.SaveChanges();
                            PartnerScope newObjPS = db.PartnerScopes.Where(x => x.partner_id == mp.partner_id && x.scope_id == tokenScope).FirstOrDefault();
                            partner_scope_id = newObjPS.partner_scope_id;
                        }
                        else
                        {
                            objPS.reference_count += 1;
                            db.Entry(objPS).State  = EntityState.Modified;
                            partner_scope_id       = objPS.partner_scope_id;
                        }
                        db.MOAPartnerScopes.Add(new MOAPartnerScope
                        {
                            partner_scope_id = partner_scope_id,
                            moa_id           = moa_id
                        });
                    }

                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }