Пример #1
0
        public override bool TakeAction()
        {
            UserFunction userFunction = new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Xiulian);

            if (userFunction != null)
            {
                UserHelper.XiuLianGianExperience(ContextUser.UserID); //修炼完成后更改修炼状态

                int inerDate = (int)(DateTime.Now - ContextUser.OnlineDate).TotalSeconds;
                if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian)
                {
                    int totalTime = 0;
                    GeneralPracticeInfo generalpractice = new ConfigCacheSet <GeneralPracticeInfo>().FindKey(ContextUser.UserLv);
                    if (VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.XiuLianYanChangErShiSiXiaoShi))
                    {
                        totalTime = ConfigEnvSet.GetInt("User.XiuLianDate");
                    }
                    else
                    {
                        if (generalpractice != null)
                        {
                            totalTime = (generalpractice.MaxHour * 60 * 60);
                        }
                    }

                    if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian && ContextUser.UserStatus != UserStatus.FightCombat)
                    {
                        ContextUser.UserStatus = UserStatus.XiuLian;
                        //ContextUser.Update();

                        List <UserQueue> userQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian);
                        if (userQueueArray.Count > 0)
                        {
                            UserQueue userQueue = userQueueArray[0];
                            userQueue.TotalColdTime = totalTime;
                            userQueue.ColdTime      = totalTime;
                            userQueue.Timing        = DateTime.Now;
                            userQueue.IsSuspend     = false;
                            userQueue.StrengNum     = 0;
                            //userQueue.Update();
                        }
                        _statusList.Add(MessageState.XiuLian);
                    }
                }
            }

            UserDailyRestrain dailyRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID);

            if (new TjxChatService(ContextUser).HasMessage(ContextUser.ChatVesion))
            {
                _statusList.Add(MessageState.Chat);
            }

            if (NoviceHelper.CheckOnlinePrize(Uid))
            {
                _statusList.Add(MessageState.TakeOnline);
            }

            if (NoviceHelper.CheckLoginPrize(Uid))
            {
                _statusList.Add(MessageState.TakeLogin);
            }
            if (new TjxBroadcastService(ContextUser).HasMessage())
            {
                _statusList.Add(MessageState.Broadcast);
            }

            if (NoviceHelper.CheckDailyExpPrize(Uid))
            {
                _statusList.Add(MessageState.TakeDailyExp);
            }

            if (RankingHelper.IsGainSportsReward(ContextUser.UserID))
            {
                _statusList.Add(MessageState.JingJiChangReward);
            }

            UserFunction countryFunction = new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Country);

            if (countryFunction != null && dailyRestrain != null && dailyRestrain.Funtion8 < VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.LingQuFengLu))
            {
                _statusList.Add(MessageState.LingQuFengLv);
            }

            if (NoviceHelper.DailyEnergy(ContextUser.UserID))
            {
                _statusList.Add(MessageState.SurplusEnergy);
            }
            if (new GameActiveCenter(Uid).HasActive())
            {
                _statusList.Add(MessageState.Huodong);
            }
            if (NoviceHelper.IsAugustSecondWeekEnergy(ContextUser))
            {
                _statusList.Add(MessageState.FestivalEnergy);
            }
            if (NoviceHelper.IsWingFestivalInfo(ContextUser.UserID))
            {
                _statusList.Add(MessageState.Wing);
            }

            if (GuildFightBroadcast(ContextUser.UserID, stakecount, ContextUser.MercenariesID))
            {
                _statusList.Add(MessageState.GuildFight);
            }
            else
            {
                stakecount = 0;
            }

            var userPrizeList = new ShareCacheStruct <UserTakePrize>().FindAll(m => !m.IsTasked && m.UserID == Uid.ToInt());

            if (userPrizeList.Count > 0)
            {
                _statusList.Add(MessageState.TaskPrize);
            }
            return(true);
        }
Пример #2
0
        public override bool TakeAction()
        {
            List <PlotNPCInfo> plotNPCInfoList = new ShareCacheStruct <PlotNPCInfo>().FindAll(m => m.PlotID == plotID);

            npcCount = (short)plotNPCInfoList.Count;
            var cacheSet = new PersonalCacheStruct <UserQueue>();
            List <UserQueue> userQueueList = cacheSet.FindAll(ContextUser.UserID, m => m.QueueType == QueueType.SaoDang);

            if (userQueueList.Count > 0)
            {
                UserQueue userQueue = userQueueList[0];
                coldTime = userQueue.DoRefresh();
                if (coldTime == 0)
                {
                    cacheSet.Delete(userQueue);
                    ContextUser.ResetSweepPool(0);
                    ContextUser.UserStatus = UserStatus.Normal;
                    //ContextUser.Update();
                }
                int tempNum = PlotHelper.GetBattleNum(userQueue.GetTiming()) + 1;
                if (npcCount > 0)
                {
                    turnsNum = PlotHelper.GetTurnsNum(npcCount, tempNum);
                    timesNum = PlotHelper.GetTimesNum(npcCount, tempNum);
                }
                //PlotHelper.CheckSweepCount(npcCount, userQueue.GetTiming(), out turnsNum, out battleNum);

                //if (battleNum >= npcCount)
                //{
                //    turnsNum = turnsNum + 1;
                //}
                //else
                //{
                //    battleNum = battleNum + 1;
                //}
            }
            userItemCount = (short)UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao).Count;
            plotInfo      = new ShareCacheStruct <PlotInfo>().FindKey(plotID);
            if (plotInfo == null)
            {
                return(false);
            }
            foreach (PlotNPCInfo npcInfo in plotNPCInfoList)
            {
                if (npcInfo == null)
                {
                    continue;
                }
                List <PlotEmbattleInfo> embattleInfoList = new ShareCacheStruct <PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == npcInfo.PlotNpcID);
                foreach (PlotEmbattleInfo embattleInfo in embattleInfoList)
                {
                    if (monsterDict.ContainsKey(embattleInfo.MonsterID))
                    {
                        if (monsterNumDict.ContainsKey(embattleInfo.MonsterID))
                        {
                            monsterNumDict[embattleInfo.MonsterID] = monsterNumDict[embattleInfo.MonsterID] + 1;
                        }
                    }
                    else
                    {
                        MonsterInfo monsterInfo = new ShareCacheStruct <MonsterInfo>().FindKey(embattleInfo.MonsterID);
                        if (monsterInfo != null)
                        {
                            monsterDict.Add(embattleInfo.MonsterID, monsterInfo);
                            monsterNumDict.Add(embattleInfo.MonsterID, 1);
                        }
                    }
                }
            }
            return(true);
        }
Пример #3
0
        public override bool TakeAction()
        {
            var             cacheSet     = new GameDataCacheSet <UserPlant>();
            UserPlant       plant        = cacheSet.FindKey(ContextUser.UserID);
            var             landCacheSet = new GameDataCacheSet <UserLand>();
            List <UserLand> landArray    = landCacheSet.FindAll(ContextUser.UserID);

            if (plant == null)
            {
                UserPlant uPlant = new UserPlant()
                {
                    UserID     = ContextUser.UserID,
                    LandNum    = 1,
                    DewNum     = ConfigEnvSet.GetInt("UserQueue.ShengShuiMaxNum"),
                    PayDewTime = 0,
                };
                cacheSet.Add(uPlant);
            }
            if (landArray.Count == 0)
            {
                UserLand userLand = new UserLand()
                {
                    UserID      = ContextUser.UserID,
                    PlantType   = PlantType.Experience,
                    LandPositon = 1,
                    IsRedLand   = 2,
                    IsBlackLand = 2,
                    IsGain      = 2
                };
                landCacheSet.Add(userLand);
            }

            if (new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Zhongzhijingqianshu) == null)
            {
                isShow = 2;
            }
            else
            {
                isShow = 1;
            }
            userPlant     = new GameDataCacheSet <UserPlant>().FindKey(ContextUser.UserID);
            userLandArray = new GameDataCacheSet <UserLand>().FindAll(ContextUser.UserID);

            //圣水恢复
            var queueCacheSet = new GameDataCacheSet <UserQueue>();
            List <UserQueue> ShengShuiQueueArray = queueCacheSet.FindAll(ContextUser.UserID, m => m.QueueType == QueueType.ShengShuiHuiFu);

            if (ShengShuiQueueArray.Count > 0)
            {
                UserQueue shengShuiQueue = ShengShuiQueueArray[0];
                if (userPlant != null)
                {
                    int shengshuiMaxNum = ConfigEnvSet.GetInt("UserQueue.ShengShuiMaxNum");
                    int restorationDate = ConfigEnvSet.GetInt("UserQueue.ShengShuiRestorationDate"); //三小时
                    int restorationNum  = ConfigEnvSet.GetInt("UserQueue.ShengShuiRestorationNum");  //恢复1点
                    int timeCount       = (int)(DateTime.Now - shengShuiQueue.Timing).TotalSeconds / restorationDate;

                    if (userPlant.DewNum < shengshuiMaxNum && timeCount > 0)
                    {
                        userPlant.DewNum = MathUtils.Addition(userPlant.DewNum, (timeCount * restorationNum), shengshuiMaxNum);
                        //userPlant.Update();

                        shengShuiQueue.Timing = DateTime.Now;
                        //shengShuiQueue.Update();
                    }
                }
            }
            else
            {
                UserQueue queue = new UserQueue()
                {
                    QueueID       = Guid.NewGuid().ToString(),
                    UserID        = ContextUser.UserID,
                    QueueType     = QueueType.ShengShuiHuiFu,
                    QueueName     = QueueType.ShengShuiHuiFu.ToString(),
                    Timing        = DateTime.Now,
                    ColdTime      = 0,
                    TotalColdTime = 0,
                    IsSuspend     = false,
                    StrengNum     = 0
                };
                queueCacheSet.Add(queue);
            }

            return(true);
        }
Пример #4
0
        public override bool TakeAction()
        {
            UserQueue userQueue = null;
            int       energyNum;
            int       coleTime  = GetSweepColdTime(out energyNum);
            short     surEnergy = MathUtils.Addition(ContextUser.EnergyNum, ContextUser.SurplusEnergy, short.MaxValue);

            if ((ContextUser.EnergyNum == 0 && ContextUser.SurplusEnergy == 0) || surEnergy < energyNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough;
                return(false);
            }
            int goldNum = GetGoldNum(out userQueue);

            if (goldNum == 0)
            {
                return(false);
            }
            if (ops == 1)
            {
                //提示晶石操作
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St4008_Tip, goldNum);
            }
            else if (ops == 2)
            {
                //使用晶石确认操作
                int userGoldNum = ContextUser.GoldNum;
                if (userGoldNum < goldNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }
                //晶石扫荡
                if (userQueue != null)
                {
                    DoAccelerateQueue(goldNum, userQueue.DoRefresh(), userQueue.GetTiming(), userQueue.TotalColdTime);
                    //加速完清除队列
                    var queueCacheSet = new GameDataCacheSet <UserQueue>();
                    queueCacheSet.Delete(userQueue);
                    ContextUser.ResetSweepPool(0);
                    //ContextUser.Update();
                }
                else
                {
                    //清除扫荡池
                    var sweepCacheSet = new GameDataCacheSet <UserSweepPool>();
                    List <UserSweepPool> sweepPoolList = sweepCacheSet.FindAll(ContextUser.UserID);
                    foreach (UserSweepPool sweepPool in sweepPoolList)
                    {
                        if (sweepPool != null)
                        {
                            sweepCacheSet.Delete(sweepPool);
                        }
                    }
                    var itemList = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);
                    if (itemList.Count >= ContextUser.GridNum)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        this.ErrorInfo = LanguageManager.GetLang().St4007_BeiBaoTimeOut;
                        return(false);
                    }
                    DoAccelerateQueue(goldNum, coleTime, 0, coleTime);
                }
                DateTime startDate = userQueue != null ? userQueue.Timing : DateTime.Now;
                UserLogHelper.AppenRaidsLog(ContextUser.UserID, 2, startDate, DateTime.Now, (short)GetSweepEnergy(out energyNum), goldNum);
            }
            else
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            return(true);
        }
Пример #5
0
        public override bool TakeAction()
        {
            short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort(); //玩家最大等级

            if (ContextUser.UserStatus == UserStatus.SaoDang)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St4007_Saodanging;
                return(false);
            }
            if (ops == 0 && ContextUser.UserStatus == UserStatus.XiuLian)
            {
                return(false);
            }
            int totalTime = 0;
            int genlv     = 0;

            if (ContextUser.UserLv > currMaxLv)
            {
                genlv = currMaxLv.ToInt();
            }
            else
            {
                genlv = ContextUser.UserLv;
            }
            GeneralPracticeInfo generalpractice = new ShareCacheStruct <GeneralPracticeInfo>().FindKey(genlv);

            if (generalpractice == null || generalpractice.IntervalTime == 0)
            {
                return(false);
            }
            if (VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.XiuLianYanChangErShiSiXiaoShi))
            {
                totalTime = ConfigEnvSet.GetInt("User.XiuLianDate");
            }
            else
            {
                totalTime = (generalpractice.MaxHour * 60 * 60);
            }

            List <UserQueue> userQueueArray = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian);

            if (ops == 0)
            {
                this.ErrorCode = 0;
                UserQueue userQueue = null;
                if (userQueueArray.Count > 0)
                {
                    userQueue = userQueueArray[0];
                }
                if (ContextUser.UserStatus != UserStatus.XiuLian)
                {
                    ContextUser.UserStatus = UserStatus.XiuLian;
                    //ContextUser.Update();
                    if (userQueue == null)
                    {
                        userQueue = new UserQueue()
                        {
                            UserID        = ContextUser.UserID,
                            QueueID       = Guid.NewGuid().ToString(),
                            QueueType     = QueueType.XiuLian,
                            QueueName     = QueueType.XiuLian.ToString(),
                            TotalColdTime = totalTime,
                            Timing        = DateTime.Now,
                            ColdTime      = totalTime,
                            IsSuspend     = false,
                            StrengNum     = 0
                        };
                        new PersonalCacheStruct <UserQueue>().Add(userQueue);
                    }
                    else
                    {
                        userQueue.TotalColdTime = totalTime;
                        userQueue.ColdTime      = totalTime;
                        userQueue.Timing        = DateTime.Now;
                        userQueue.StrengNum     = 0;
                        userQueue.DoStart();
                    }
                }
            }
            else if (ops == 1)
            {
                ErrorCode = 1;
                if (ContextUser.UserStatus != UserStatus.Normal && ContextUser.UserStatus != UserStatus.FightCombat)
                {
                    ContextUser.UserStatus = UserStatus.Normal;
                    //ContextUser.Update();
                    if (userQueueArray.Count > 0)
                    {
                        UserQueue userQueue = userQueueArray[0];
                        userQueue.IsSuspend = true;
                        //userQueue.Update();
                    }
                    List <UserMagic> userMagicArray = new PersonalCacheStruct <UserMagic>().FindAll(ContextUser.UserID, u => u.IsEnabled && u.MagicType == MagicType.MoFaZhen);
                    if (userMagicArray.Count > 0)
                    {
                        List <UserEmbattle> userEmbattleArray = new PersonalCacheStruct <UserEmbattle>().FindAll(ContextUser.UserID, m => m.MagicID == userMagicArray[0].MagicID);
                        int practiceTime = 0; //修炼时间
                        if (userQueueArray.Count > 0)
                        {
                            UserQueue queueInfo = userQueueArray[0];
                            TimeSpan  ts        = DateTime.Now - queueInfo.Timing;
                            practiceTime = (int)ts.TotalSeconds;
                            if (practiceTime <= totalTime && queueInfo.Timing <= DateTime.Now)
                            {
                                experience = ((practiceTime / generalpractice.IntervalTime) * generalpractice.Exprience);
                            }
                            foreach (UserEmbattle embattle in userEmbattleArray)
                            {
                                UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, embattle.GeneralID);
                                if (general != null)
                                {
                                    general.Experience1 = MathUtils.Addition(general.Experience1, experience, int.MaxValue);
                                    if (general.GeneralLv >= UserHelper._currMaxLv)
                                    {
                                        continue;
                                    }
                                    if (general.GeneralID == LanguageManager.GetLang().GameUserGeneralID)
                                    {
                                        general.CurrExperience = MathUtils.Addition(general.CurrExperience, MathUtils.Subtraction(experience, queueInfo.StrengNum, 0), int.MaxValue);
                                    }
                                    else
                                    {
                                        general.CurrExperience = MathUtils.Addition(general.CurrExperience, experience, int.MaxValue);
                                    }

                                    //general.Update();
                                }
                            }
                        }
                    }
                }
            }
            return(true);
        }
Пример #6
0
        public override bool TakeAction()
        {
            List <UserQueue> queueList = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.SaoDang);

            if (queueList.Count > 0)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4007_Saodanging;
                return(false);
            }
            var itemList = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);

            if (itemList.Count >= ContextUser.GridNum)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4007_BeiBaoTimeOut;
                return(false);
            }
            List <PlotNPCInfo> npcList = new ShareCacheStruct <PlotNPCInfo>().FindAll(m => m.PlotID == plotID);
            //战斗次数
            int plotNpcNum = npcList.Count;
            int energyNum  = 0;
            int battleNum;

            if (ops == 1)
            {
                //用尽精力,玩家可扫荡轮数
                energyNum = ContextUser.EnergyNum > 200 ? 200 : ContextUser.EnergyNum.ToInt();
                int userTurnsNum = (int)Math.Floor((double)energyNum / PlotInfo.BattleEnergyNum);
                battleNum = userTurnsNum * plotNpcNum;
                coldTime  = battleNum * PlotInfo.BattleSpeedNum;
            }
            else if (ops == 2)
            {
                //30分钟
                coldTime  = Time_30;
                battleNum = PlotHelper.GetBattleNum(Time_30);
                energyNum = PlotHelper.GetTurnsNum(plotNpcNum, battleNum) * PlotInfo.BattleEnergyNum;
            }
            else if (ops == 3)
            {
                //60分钟
                coldTime  = Time_60;
                battleNum = PlotHelper.GetBattleNum(Time_60);
                energyNum = PlotHelper.GetTurnsNum(plotNpcNum, battleNum) * PlotInfo.BattleEnergyNum;
            }
            else
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (ContextUser.EnergyNum == 0 || ContextUser.EnergyNum < energyNum)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough;
                return(false);
            }
            //清除扫荡池
            var sweepCacheSet = new PersonalCacheStruct <UserSweepPool>();
            List <UserSweepPool> sweepPoolList = sweepCacheSet.FindAll(ContextUser.UserID);

            foreach (UserSweepPool sweepPool in sweepPoolList)
            {
                if (sweepPool != null)
                {
                    sweepCacheSet.Delete(sweepPool);
                }
            }

            if (coldTime > 0)
            {
                //在开始战斗时扣一次玩家精力,无战斗离开返还
                ContextUser.ResetSweepPool(plotID);
                //开始扫荡暂不扣精力
                //ContextUser.RemoveEnergyNum(PlotInfo.BattleEnergyNum);
                ContextUser.UserStatus = UserStatus.SaoDang;
                //ContextUser.Update();

                //放入队列中
                UserQueue userQueue = new UserQueue()
                {
                    QueueID       = Guid.NewGuid().ToString(),
                    UserID        = ContextUser.UserID,
                    QueueType     = QueueType.SaoDang,
                    QueueName     = QueueType.SaoDang.ToString(),
                    TotalColdTime = coldTime,
                    Timing        = DateTime.Now,
                    ColdTime      = coldTime,
                    IsSuspend     = false
                };
                new PersonalCacheStruct <UserQueue>().Add(userQueue);
            }
            return(true);
        }
Пример #7
0
 public void Init()
 {
     instance = new UserQueue();
 }
Пример #8
0
        public override bool TakeAction()
        {
            int         exp         = 0;
            short       currMaxLv   = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort(); //玩家最大等级
            UserGeneral userGeneral = UserGeneral.GetMainGeneral(ContextUser.UserID);
            int         genLv       = 0;

            if (ContextUser.UserLv > currMaxLv)
            {
                genLv = currMaxLv.ToInt();
            }
            else
            {
                genLv = ContextUser.UserLv;
            }
            GeneralPracticeInfo generalpractice = new ConfigCacheSet <GeneralPracticeInfo>().FindKey(genLv);
            var      ranking  = RankingFactory.Get <UserRank>(CombatNumRanking.RankingKey);
            UserRank rankInfo = ranking.Find(m => m.UserID == ContextUser.UserID);

            if (rankInfo != null && rankInfo.TotalCombatNum > 0)
            {
                fightingNum = rankInfo.TotalCombatNum;
            }
            else
            {
                //fightingNum = UserHelper.GetGameUserCombat(ContextUser.UserID);
            }

            int totalTime = 0;

            if (generalpractice == null)
            {
                return(false);
            }
            totalTime = (generalpractice.MaxHour * 60 * 60);
            List <UserQueue> userQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian);

            if (userQueueArray.Count > 0 && !userQueueArray[0].IsSuspend)
            {
                UserQueue queueInfo = userQueueArray[0];
                TimeSpan  ts        = DateTime.Now - queueInfo.Timing;
                //practiceTime = (int)ts.TotalSeconds;
                int preExpTime = 0;
                practiceTime = queueInfo.DoRefresh();
                if (practiceTime > 0)
                {
                    if (userQueueArray[0].Timing <= DateTime.Now)
                    {
                        preExpTime = ((int)((DateTime.Now - userQueueArray[0].Timing).TotalSeconds) /
                                      generalpractice.IntervalTime);
                        experience = generalpractice.Exprience * preExpTime;
                        if (experience > 0)
                        {
                            exp = generalpractice.Exprience;
                        }
                    }
                }
                currExperience      = MathUtils.Addition(userGeneral.CurrExperience, exp, int.MaxValue);
                queueInfo.StrengNum = MathUtils.Addition(queueInfo.StrengNum, exp, int.MaxValue);
                //queueInfo.Update();

                userGeneral.CurrExperience = currExperience;
                //userGeneral.Update();
            }
            return(true);
        }
Пример #9
0
        public async Task EditUser(UserQueue userQueue)
        {
            User user = await this.db.GetUserById(userQueue.TenantId, userQueue.Id.Value).FirstOrDefaultAsync();

            user.FirstName          = userQueue.FirstName;
            user.LastName           = userQueue.LastName;
            user.Email              = userQueue.Email;
            user.NormalizedEmail    = userQueue.Email.ToUpper().Trim();
            user.UserName           = userQueue.Email;
            user.NormalizedUserName = userQueue.Email.ToUpper().Trim();
            user.Status             = userQueue.Status;
            user.Owed    = userQueue.Owed;
            user.Claimed = userQueue.Claimed;

            var userRoles = await this.db.UserRoles.Where(x => x.UserId == user.Id).ToListAsync();

            var applicationRoles = await this.db.Roles.ToListAsync();

            foreach (var role in applicationRoles)
            {
                if (role.NormalizedName == "ADMINISTRATOR")
                {
                    if (userQueue.IsAdmin)
                    {
                        if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null)
                        {
                            var ur = new IdentityUserRole <Guid>
                            {
                                RoleId = role.Id,
                                UserId = user.Id
                            };
                            this.db.UserRoles.Add(ur);
                        }
                    }
                    else
                    {
                        var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id);
                        if (userRole != null)
                        {
                            this.db.UserRoles.Remove(userRole);
                        }
                    }
                }

                if (role.NormalizedName == "COACH")
                {
                    if (userQueue.IsCoach)
                    {
                        if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null)
                        {
                            var ur = new IdentityUserRole <Guid>
                            {
                                RoleId = role.Id,
                                UserId = user.Id
                            };
                            this.db.UserRoles.Add(ur);
                        }
                    }
                    else
                    {
                        var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id);
                        if (userRole != null)
                        {
                            this.db.UserRoles.Remove(userRole);
                        }
                    }
                }

                if (role.NormalizedName == "GLOBAL_ADMIN")
                {
                    if (userQueue.IsGlobalAdmin)
                    {
                        if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null)
                        {
                            var ur = new IdentityUserRole <Guid>
                            {
                                RoleId = role.Id,
                                UserId = user.Id
                            };
                            this.db.UserRoles.Add(ur);
                        }
                    }
                    else
                    {
                        var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id);
                        if (userRole != null)
                        {
                            this.db.UserRoles.Remove(userRole);
                        }
                    }
                }
            }

            await this.db.SaveChangesAsync();

            this.logger.LogCustomInformation($"User '{user.FirstName} {user.LastName}' - '{user.Email}' with id '{user.Id}' has successfully created", userQueue.TenantId.ToString(), userQueue.UserPerformingAction.ToString());
        }