public async Task EndCurrentMission(string userId, MissionProgressionHistory[] historyToUpdate) { var user = await this.SelectAsync(userId); if (user == null) { return; } var missionsCompleted = user.MissionCompleted?.ToList() ?? new List <MissionComplete>(); Mission mission = await this.MissionsManager.GetMissionById(user.MissionProgress.MissionId); MissionComplete missionComplete = new MissionComplete { IdMission = user.MissionProgress.MissionId, StartDate = user.MissionProgress.StartDate, CompletedDate = DateTime.UtcNow, History = historyToUpdate }; var nbReleve = missionComplete.History?.Count(); missionsCompleted.Add(missionComplete); user.MissionCompleted = missionsCompleted.ToArray(); user.MissionProgress = null; await this.DataContext.Users.FindOneAndReplaceAsync(u => u.Id == user.Id, user); await this.UserNotify.SendInfoNotif(userId, $"Vous avez terminé la mission en faisant {nbReleve} relevés !"); }
private void OnMissionComplete() { if (_lastMissionComplete + TimeSpan.FromSeconds(30) < DateTime.Now) { //Only raise this event at most once every 30 seconds MissionComplete?.Invoke(this, EventArgs.Empty); _lastMissionComplete = DateTime.Now; } }
public async Task AddCompleteMission(User user) { if (user == null) { return; } var completeMission = new MissionComplete { IdMission = "0fbae5829539411e9bad8f90397c0738", StartDate = DateTime.Now, CompletedDate = DateTime.Now }; user.MissionCompleted = new MissionComplete[] { completeMission }; await this.DataContext.Users.FindOneAndReplaceAsync(u => u.Id == user.Id, user); }