Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }