public ActionResult ApplyModal(ApplyModalDataModel model)
 {
     using (ApplyMaintainModule module = new ApplyMaintainModule())
     {
         var details = module.SaveApply(model);
         if (details == null)
         {
             TempData["ErrorMsg"] = "查無該活動賽事";
         }
     }
     return(RedirectToAction("ApplyEdit", new { ID = model.ActivityID }));
 }
Exemple #2
0
        public ApplyModalDataModel GetApplyData(int actID, int applyID)
        {
            ApplyModalDataModel model =
                DB.OLACT
                .Join(DB.APPLY,
                      act => act.ID,
                      apply => apply.MAP_ACT_ID,
                      (act, apply) => new { act, apply })
                .Where(o => o.act.ID == actID && o.apply.ID == applyID)
                .AsEnumerable()
                .Select(s => new ApplyModalDataModel()
            {
                ActivityID    = s.act.ID,
                ApplyID       = s.apply.ID,
                ActivityTitle = s.act.ACTITLE,
                ApplyGroupID  = s.apply.MAP_ACT_GUP_ID,
                ApplyNumber   = s.apply.APPLY_IDEN_NUM,
                ApplyStatus   = s.apply.APPLY_SUCCESS,
                Coach         = s.apply.TEAM_COACH,
                Contact       = s.apply.CONTACT,
                ContactPhone  = s.apply.CONTACT_PHONE,
                Email         = s.apply.EMAIL,
                Remark        = s.apply.REMRK.ReplaceEmpty(),
                TeamName      = s.apply.TEAM_NM,
                Member        = GetMemberInfoByApplyID(s.act.ID, s.apply.ID)
            })
                .FirstOrDefault();

            if (model != null)
            {
                var group = DB.OLACTGROUP
                            .Where(o => o.MAP_ACT_ID == model.ActivityID)
                            .Select(s => new OutWeb.Models.FrontEnd.ApplyModels.ApplyViewGroup()
                {
                    GroupID         = s.ID,
                    GroupName       = s.GROUP_NAME,
                    GroupApplyLimit = s.TEAM_APPLY_LIMIT,
                    CountApplyLimit = s.COUNT_APPLY_LIMIT
                })
                            .ToList();

                foreach (var g in group)
                {
                    var applyGorupLimitCount = DB.APPLY.Where(o => o.MAP_ACT_ID == model.ActivityID && o.MAP_ACT_GUP_ID == g.GroupID).Count();
                    g.CountApplyLastLimit = (g.GroupApplyLimit - applyGorupLimitCount) <= 0 ? 0 : (g.GroupApplyLimit - applyGorupLimitCount);
                    model.ActivityGroup.Add(g);
                }
                model.ApplyGroupJsonString = JsonConvert.SerializeObject(model.ActivityGroup);
            }

            return(model);
        }
        public ActionResult ApplyModal(int actID, int applyID)
        {
            ApplyModalDataModel model = new ApplyModalDataModel();

            using (var applyModule = new ApplyFrontModule())
            {
                using (ApplyMaintainModule module = new ApplyMaintainModule())
                {
                    model = module.GetApplyData((int)actID, (int)applyID);
                    if (model == null)
                    {
                        TempData["ErrorMsg"] = "查無該活動賽事";
                    }
                    else
                    {
                        TempData["ErrorMsg"] = "";
                    }
                }
            }
            return(PartialView("_ApplyModalPartial", model));
        }
Exemple #4
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);
        }