예제 #1
0
        public void editMOUBasicInfo(int mou_id, MOUBasicInfo newBasicInfo)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    DateTime mou_end_date = DateTime.ParseExact(newBasicInfo.mou_end_date_string, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    //update basicInfo
                    MOU mou = db.MOUs.Find(mou_id);
                    mou.mou_code        = newBasicInfo.mou_code;
                    mou.mou_end_date    = mou_end_date;
                    mou.mou_note        = newBasicInfo.mou_note;
                    mou.evidence        = newBasicInfo.evidence;
                    mou.office_id       = newBasicInfo.office_id;
                    db.Entry(mou).State = EntityState.Modified;
                    db.SaveChanges();

                    //update MOUStatusHistory
                    MOUStatusHistory m = new MOUStatusHistory();
                    m.mou_status_id = newBasicInfo.mou_status_id;
                    m.reason        = newBasicInfo.reason;
                    m.mou_id        = mou_id;
                    m.datetime      = DateTime.Now;
                    db.MOUStatusHistories.Add(m);
                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return;
        }
 public void deleteMOU(int mou_id)
 {
     using (DbContextTransaction transaction = db.Database.BeginTransaction())
     {
         try
         {
             MOU mou = db.MOUs.Find(mou_id);
             mou.is_deleted      = true;
             db.Entry(mou).State = EntityState.Modified;
             db.SaveChanges();
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             throw ex;
         }
     }
 }
 private void updateNotiCount(NotificationInfo noti)
 {
     using (DbContextTransaction transaction = db.Database.BeginTransaction())
     {
         try
         {
             foreach (string mouCode in noti.ExpiredMOUCode)
             {
                 MOU mou = db.MOUs.Where(x => x.mou_code.Equals(mouCode)).First();
                 mou.noti_count     += 1;
                 db.Entry(mou).State = EntityState.Modified;
             }
             db.SaveChanges();
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             throw ex;
         }
     }
 }
        public void addMOU(MOUAdd input)
        {
            using (DbContextTransaction transaction = db.Database.BeginTransaction())
            {
                try
                {
                    //add MOU
                    //Check Partner
                    //add MOUPartner =>
                    //check or add PartnerScope
                    //add MOUPartnerScope
                    //add MOUPartnerSpecialization
                    //add MOUStatusHistory
                    DateTime mou_end_date = DateTime.ParseExact(input.BasicInfo.mou_end_date, "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    MOU      m            = new MOU
                    {
                        mou_code     = input.BasicInfo.mou_code,
                        mou_end_date = mou_end_date,
                        mou_note     = input.BasicInfo.mou_note,
                        evidence     = input.BasicInfo.evidence is null ? "" : input.BasicInfo.evidence,
                        office_id    = input.BasicInfo.office_id,
                        account_id   = 1,
                        add_time     = DateTime.Now,
                        is_deleted   = false,
                        noti_count   = 0
                    };
                    db.MOUs.Add(m);
                    //checkpoint 1
                    db.SaveChanges();
                    MOU objMOU = db.MOUs.Where(x => x.mou_code == input.BasicInfo.mou_code).First();

                    //Add MOUStatusHistory
                    db.MOUStatusHistories.Add(new ENTITIES.MOUStatusHistory
                    {
                        datetime      = DateTime.Now,
                        reason        = input.BasicInfo.reason,
                        mou_id        = objMOU.mou_id,
                        mou_status_id = input.BasicInfo.mou_status_id
                    });

                    foreach (PartnerInfo item in input.PartnerInfo.ToList())
                    {
                        int partner_id_item = 0;
                        //new partner
                        if (item.partner_id == 0)
                        {
                            db.Partners.Add(new ENTITIES.Partner
                            {
                                partner_name = item.partnername_add,
                                website      = item.website_add,
                                address      = item.address_add,
                                country_id   = 13
                            });
                            //checkpoint 2
                            db.SaveChanges();
                            ENTITIES.Partner objPartner = db.Partners.Where(x => x.partner_name == item.partnername_add).First();
                            partner_id_item = objPartner.partner_id;
                        }
                        else //old partner
                        {
                            partner_id_item = item.partner_id;
                        }
                        //add to MOUPartner via each partner of MOU
                        db.MOUPartners.Add(new ENTITIES.MOUPartner
                        {
                            mou_id              = objMOU.mou_id,
                            partner_id          = partner_id_item,
                            mou_start_date      = DateTime.ParseExact(item.sign_date_mou_add, "dd/MM/yyyy", CultureInfo.InvariantCulture),
                            contact_point_name  = item.represent_add,
                            contact_point_email = item.email_add,
                            contact_point_phone = item.phone_add
                        });
                        //PartnerScope and MOUPartnerScope
                        foreach (int tokenScope in item.coop_scope_add.ToList())
                        {
                            PartnerScope objPS            = db.PartnerScopes.Where(x => x.partner_id == partner_id_item && x.scope_id == tokenScope).FirstOrDefault();
                            int          partner_scope_id = 0;
                            if (objPS == null)
                            {
                                db.PartnerScopes.Add(new PartnerScope
                                {
                                    partner_id      = partner_id_item,
                                    scope_id        = tokenScope,
                                    reference_count = 0
                                });
                                //checkpoint 3
                                db.SaveChanges();
                                PartnerScope newObjPS = db.PartnerScopes.Where(x => x.partner_id == partner_id_item && 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.MOUPartnerScopes.Add(new MOUPartnerScope
                            {
                                partner_scope_id = partner_scope_id,
                                mou_id           = objMOU.mou_id
                            });
                        }
                        //checkpoint 4
                        db.SaveChanges();
                        //MOUPartnerSpe
                        MOUPartner objMOUPartner = db.MOUPartners.Where(x => (x.mou_id == objMOU.mou_id && x.partner_id == partner_id_item)).First();
                        foreach (int tokenSpe in item.specialization_add.ToList())
                        {
                            db.MOUPartnerSpecializations.Add(new MOUPartnerSpecialization
                            {
                                mou_partner_id    = objMOUPartner.mou_partner_id,
                                specialization_id = tokenSpe,
                            });
                        }
                    }
                    db.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
        }