public ApplyModalDataModel SaveApply(ApplyModalDataModel model) { ApplyModalDataModel result = new ApplyModalDataModel(); using (var transction = DB.Database.CurrentTransaction ?? DB.Database.BeginTransaction()) { var apply = DB.APPLY.Where(o => o.MAP_ACT_ID == model.ActivityID && o.ID == model.ApplyID).FirstOrDefault(); if (apply == null) { throw new Exception("無法取得該報名檔,是否已刪除?"); } apply.MAP_ACT_GUP_ID = model.ApplyGroupID; apply.TEAM_COACH = model.Coach; apply.CONTACT = model.Contact; apply.CONTACT_PHONE = model.ContactPhone; apply.EMAIL = model.Email; apply.REMRK = model.Remark.ReplaceEmpty(); apply.TEAM_NM = model.TeamName; apply.MAP_ACT_ID = model.ActivityID; apply.APPLY_SUCCESS = model.ApplyStatus; apply.UPD_DT = DateTime.UtcNow.AddHours(8); try { this.DB.Entry(apply).State = EntityState.Modified; DB.SaveChanges(); transction.Commit(); } catch (Exception ex) { transction.Rollback(); throw ex; } } IQueryable <APPLY_MEMBER> deleteMember; if (model.Member.Count > 0) { List <int> memberIds = model.Member.Where(o => o.ID.HasValue || o.ID > 0).Select(s => (int)s.ID).ToList(); using (var transaction = DB.Database.CurrentTransaction ?? DB.Database.BeginTransaction()) { if (memberIds.Count > 0) { var members = DB.APPLY_MEMBER.Where(o => memberIds.Contains(o.ID)).ToList(); foreach (var baseMb in members) { var updateMb = model.Member.Where(o => o.ID == baseMb.ID).First(); baseMb.MEMBER_IDEN_ID = updateMb.MemberIdentityID; baseMb.MEMBER_BIRDT = updateMb.MemberBirthday; baseMb.MERBER_NM = updateMb.MemberName; baseMb.MERBER_TP = updateMb.MemberType; baseMb.MAP_APPLY_ID = model.ApplyID; baseMb.REF_ACT_ID = model.ActivityID; baseMb.UPD_DT = DateTime.UtcNow.AddHours(8); this.DB.Entry(baseMb).State = EntityState.Modified; try { DB.SaveChanges(); } catch (Exception ex) { throw; } } } else { deleteMember = DB.APPLY_MEMBER.Where(o => o.REF_ACT_ID == model.ActivityID && o.MAP_APPLY_ID == model.ApplyID); DB.APPLY_MEMBER.RemoveRange(deleteMember); } deleteMember = DB.APPLY_MEMBER.Where(o => o.REF_ACT_ID == model.ActivityID && o.MAP_APPLY_ID == model.ApplyID && !memberIds.Contains(o.ID)); DB.APPLY_MEMBER.RemoveRange(deleteMember); List <APPLY_MEMBER> memberList = new List <APPLY_MEMBER>(); foreach (var member in model.Member) { if (!member.ID.HasValue || member.ID == 0) { APPLY_MEMBER temp = new APPLY_MEMBER() { MEMBER_IDEN_ID = member.MemberIdentityID, MEMBER_BIRDT = member.MemberBirthday, MERBER_NM = member.MemberName, MERBER_TP = member.MemberType, BUD_DT = DateTime.UtcNow.AddHours(8), UPD_DT = DateTime.UtcNow.AddHours(8), MAP_APPLY_ID = model.ApplyID, REF_ACT_ID = model.ActivityID }; memberList.Add(temp); } } ; DB.APPLY_MEMBER.AddRange(memberList); DB.SaveChanges(); try { DB.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } } result = GetApplyData(model.ApplyID, model.ActivityID); return(result); }
/// <summary> /// 儲存報名資料 /// </summary> /// <param name="model"></param> /// <returns></returns> public ApplyDataModel SaveApply(ApplyDataModel model) { int identityId = 0; ApplyDataModel result = new ApplyDataModel(); using (var transction = DB.Database.CurrentTransaction ?? DB.Database.BeginTransaction()) { APPLY apply = new APPLY() { MAP_ACT_GUP_ID = model.ApplyGroupID, TEAM_COACH = model.Coach, CONTACT = model.Contact, CONTACT_PHONE = model.ContactPhone, EMAIL = model.Email, REMRK = model.Remark, TEAM_NM = model.TeamName, MAP_ACT_ID = model.ActivityID, BUD_DT = DateTime.UtcNow.AddHours(8), UPD_DT = DateTime.UtcNow.AddHours(8), APPLY_SUCCESS = false }; try { DB.APPLY.Add(apply); DB.SaveChanges(); identityId = apply.ID; transction.Commit(); } catch (Exception ex) { transction.Rollback(); throw ex; } } using (var transaction = DB.Database.CurrentTransaction ?? DB.Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { var aply = DB.APPLY.Where(o => o.ID == identityId).FirstOrDefault(); aply.APPLY_IDEN_NUM = CreateApplyNumberByActivityID(model.ActivityID, identityId, DB); this.DB.Entry(aply).State = EntityState.Modified; try { DB.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } }; if (model.Member.Count > 0) { using (var transaction = DB.Database.CurrentTransaction ?? DB.Database.BeginTransaction()) { List <APPLY_MEMBER> memberList = new List <APPLY_MEMBER>(); foreach (var member in model.Member) { APPLY_MEMBER temp = new APPLY_MEMBER() { MEMBER_IDEN_ID = member.MemberIdentityID, MEMBER_BIRDT = member.MemberBirthday, MERBER_NM = member.MemberName, MERBER_TP = member.MemberType, BUD_DT = DateTime.UtcNow.AddHours(8), UPD_DT = DateTime.UtcNow.AddHours(8), MAP_APPLY_ID = identityId, REF_ACT_ID = model.ActivityID }; memberList.Add(temp); } ; try { DB.APPLY_MEMBER.AddRange(memberList); DB.SaveChanges(); transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); throw ex; } } } result = GetApplyDetailsByID(identityId, model.ActivityID); return(result); }