public bool SetMissionFinsh(string UserID, int userMissionSn) { List <MissionNoteModel> mnList = GetMissionCode(UserID).ToList(); MissionNoteModel mn = mnList.Where(p => p.userMissionSn == userMissionSn).FirstOrDefault(); if (mn == null) { return(false); } if (mn.isFinsh) { foreach (MissionAssets ma in mn.maList) { AssetsRecord ar = new AssetsRecord { type = 3, unitSn = ma.unitSn, assets = ma.assets, UserId = UserID, inpdate = DateTime.Now }; new AssetsRepository().AddAssetsByAssets(ar); UserMissions um = db.UserMissions.Where(p => p.sn == userMissionSn && p.userID == UserID).FirstOrDefault(); um.valid = 2; db.SaveChanges(); } return(true); } else { return(false); } }
/// <summary> /// 미션 정보 얻기 /// </summary> /// <param name="session"></param> /// <returns></returns> public static async Task <UserMissions> GetMissionsLock(Session session) { var userMissions = new UserMissions(); List <Models.Mission> missions; missions = await MissionCache.Instance.GetEntities(session.member_no, session.user_no, true); if (await Refresh(missions, session, true)) { await using (var mylock = await RedLock.CreateLockAsync($"lock:session:{session.session_id}")) { missions = await MissionCache.Instance.GetEntities(session.member_no, session.user_no, true); await Refresh(missions, session, false); } } if (missions.Count > 0) { foreach (var mission in missions) { var mission_base = new MissionBaseInfo(); foreach (var m in mission.Missions()) { mission_base.Add(((ValueTuple <int, int, bool, int>)m).Item1, ((ValueTuple <int, int, bool, int>)m).Item2, ((ValueTuple <int, int, bool, int>)m).Item3); } mission_base.MissionBaseId = mission.mission_base_id; mission_base.MissionBaseReward = mission.mission_reward; userMissions.MissionBaseList.Add(mission_base); } } return(userMissions); }