Beispiel #1
0
        /// <summary>
        ///     Updates the user ater mission completion.
        /// </summary>
        /// <param name="missionRequest">The mission request.</param>
        /// <param name="missionRepository">The mission repository.</param>
        /// <param name="appCountersService">The application counters service.(need to be passed for missions from the last set)</param>
        /// <returns>
        ///     Points increase
        /// </returns>
        public static async Task <int> UpdateUserAfterMissionCompletion(
            MissionRequest missionRequest,
            IMissionRepository missionRepository,
            AppCountersService appCountersService = null)
        {
            var currentLevelMax = levelMap[missionRequest.User.Level.Value]; //user level can't be null
            var expIncrease     = (ushort)(missionRequest.Mission.Difficulty * GameConstants.Experience.PerDifficultyPoint);
            var pointsIncrease  =
                (int)Math.Round(expIncrease * GameConstants.Points.ExtraMultiplier * missionRequest.StarsCount.Value);

            //stars after completion can't be null
            missionRequest.User.LevelPoints += expIncrease;
            missionRequest.User.Points       = (missionRequest.User.Points ?? 0) + pointsIncrease;
            if (missionRequest.User.LevelPoints >= currentLevelMax)
            {
                missionRequest.User.Level++;
                missionRequest.User.LevelPoints = (ushort)(missionRequest.User.LevelPoints - currentLevelMax);
            }

            CalculatePersonQualities(missionRequest, true);

            await MissionFinished(missionRequest, true, missionRepository, appCountersService);

            return(expIncrease);
        }
Beispiel #2
0
        private static async Task CheckForLastSetAndLoadMissions(
            MissionRequest missionRequest,
            IMissionRepository missionRepository,
            User user,
            string changedSetId,
            bool lastSetExist)
        {
            var finishedSet = user.MissionSetIds.First(s => s.MissionSetId == changedSetId);

            if (!lastSetExist)
            {
                MissionSetIdWithOrder newSet;
                var currentOrder = finishedSet.Order + 1;
                do
                {
                    newSet = user.MissionSetIds.FirstOrDefault(s => s.Order == currentOrder);
                    if (newSet == null) //after 3 sets completed before test passed
                    {
                        break;
                    }
                    currentOrder++;
                }while ((user.ActiveMissionSetIds.Contains(newSet.MissionSetId) ||
                         user.CompletedMissionSetIds.Contains(newSet.MissionSetId)));

                if (newSet != null)
                {
                    user.ActiveMissionSetIds.Add(newSet.MissionSetId);
                    // go to db to load missions from set, not ideal but for now is ok
                    await LoadMissionsFromNewSet(missionRepository, newSet.MissionSetId, missionRequest.User);
                }
            }
        }
Beispiel #3
0
        private static async Task <IList <string> > GetChangedSetIds(
            MissionRequest missionRequest,
            bool success,
            IMissionRepository missionRepository,
            User user,
            Mission mission)
        {
            if (success)
            {
                user.CompletedMissionIds = user.CompletedMissionIds ?? new List <string>();
                user.CompletedMissionIds.Add(mission.Id);
            }
            else
            {
                user.FailedMissionIds = user.FailedMissionIds ?? new List <string>();
                user.FailedMissionIds.Add(mission.Id);
            }
            user.ActiveMissionIds.RemoveAll(m => m.MissionId == mission.Id);

            var autoRemovedActiveMissions = await CheckActiveMissionDependencies(missionRequest, success, missionRepository);

            var changedSetIds = autoRemovedActiveMissions.Select(m => m.MissionSetId).ToIList();

            if (!changedSetIds.Contains(mission.MissionSetId))
            {
                changedSetIds.Add(mission.MissionSetId);
            }
            return(changedSetIds);
        }
        public MissionTrackerViewModel()
        {
            Missions            = new ObservableCollection <MissionAcceptedEvent>();
            Cargo               = new ObservableCollection <Cargo>();
            MissionRequirements = new ObservableCollection <MissionCargo>();
            ProblemStations     = new ObservableCollection <ProblemStation>();

            BindingOperations.EnableCollectionSynchronization(Missions, sMissionsLock);
            BindingOperations.EnableCollectionSynchronization(Cargo, sCargoLock);
            BindingOperations.EnableCollectionSynchronization(MissionRequirements, sMissionCargoLock);
            BindingOperations.EnableCollectionSynchronization(ProblemStations, sProblemStationsLock);

            Missions.CollectionChanged += new NotifyCollectionChangedEventHandler(calculateMissionRequirements);
            mRepository = MissionSqlLiteRepository.Instance;
            foreach (var cargo in mRepository.loadAllCargo().AsEnumerable())
            {
                Cargo.Add(new Cargo(cargo.Key, cargo.Value));
            }
            foreach (var json in mRepository.loadAllMissions())
            {
                var journalEvent = (MissionAcceptedEvent)JournalMonitor.ParseJournalEntry(json);
                Missions.Add(journalEvent);
            }
            mDatabaseHandler            = new NotifyCollectionChangedEventHandler(updateDatabase);
            Missions.CollectionChanged += mDatabaseHandler;

            DeleteSelectedMission        = new RelayCommand(deleteMission, () => SelectedMission != null);
            CalculateProblematicStations = new RelayCommand(() => new ProblematicDestinationCalculator(this).calculate());
        }
Beispiel #5
0
        private static async Task MissionFinished(
            MissionRequest missionRequest,
            bool success,
            IMissionRepository missionRepository,
            AppCountersService appCountersService)
        {
            var user          = missionRequest.User;
            var mission       = missionRequest.Mission;
            var changedSetIds = await GetChangedSetIds(missionRequest, success, missionRepository, user, mission);

            var lastSetExist = changedSetIds.Contains(GameConstants.MissionSet.LastSetId);

            foreach (var changedSetId in changedSetIds)
            {
                var hasOtherSetMissions = user.ActiveMissionIds.Any(m => m.MissionSetId == changedSetId);
                if (!hasOtherSetMissions)
                {
                    user.ActiveMissionSetIds.Remove(changedSetId);

                    user.CompletedMissionSetIds = user.CompletedMissionSetIds ?? new List <string>();
                    user.CompletedMissionSetIds.Add(changedSetId);

                    await CheckForLastSetAndLoadMissions(missionRequest, missionRepository, user, changedSetId, lastSetExist);
                }
            }

            await CheckLastSetCounters(missionRequest, appCountersService);

            UpdateThreeStarsAchievement(user, missionRequest.StarsCount);
        }
Beispiel #6
0
        public MainWindow()
        {
            InitializeComponent();
            window = this;

            IKernel kernel;

            kernel = new StandardKernel(new NinjectConfigModule());

            resourceRepo = kernel.Get <IResourceRepository>();
            planetRepo   = kernel.Get <IPlanetRepository>();
            missionRepo  = kernel.Get <IMissionRepository>();
            fractionRepo = kernel.Get <IFractionRepository>();
            typeRepo     = kernel.Get <IMissionTypeRepository>();
            pausedRepo   = kernel.Get <IPausedMissionRepository>();
            endedRepo    = kernel.Get <IEndedMissionRepository>();
            planetSer    = kernel.Get <IPlanetService>();
            missionSer   = kernel.Get <IMissionService>();
            resourceSer  = kernel.Get <IResourceService>();

            resourceCollection = new ObservableCollection <string>();
            planetCollection   = new ObservableCollection <string>();
            missionCollection  = new ObservableCollection <string>();

            resourcesListBox.ItemsSource = resourceCollection;
            planetsListBox.ItemsSource   = planetCollection;
            missionsListBox.ItemsSource  = missionCollection;

            resourcesListBox.SelectionChanged += new SelectionChangedEventHandler(ResourceListBox_Click);
            planetsListBox.SelectionChanged   += new SelectionChangedEventHandler(PlanetListBox_Click);
            missionsListBox.SelectionChanged  += new SelectionChangedEventHandler(MissionListBox_Click);

            FillDatabase();
            LoadResources();
        }
Beispiel #7
0
        private static async Task <List <MissionIdWithSetId> > CheckActiveMissionDependencies(
            MissionRequest missionRequest,
            bool success,
            IMissionRepository missionRepository)
        {
            var autoRemovedActiveMissions = new List <MissionIdWithSetId>();

            if (success)
            {
                return(autoRemovedActiveMissions);
            }

            var user = missionRequest.User;
            var declinedMissionId = missionRequest.Mission.Id;
            var activeMissionsIds = user.ActiveMissionIds.Select(m => m.MissionId).ToIList();
            var activeMissions    =
                (await
                 missionRepository.GetMissions(
                     new QueryOptions <Mission>
            {
                Filter =
                    ExpressionHelper.Expr((Mission x) => x.Id).In(activeMissionsIds),
                Select = mission => new { mission.Id, mission.DependsOn }
            }));

            AutoDeclineActiveMissions(
                declinedMissionId,
                activeMissions,
                user,
                autoRemovedActiveMissions);

            return(autoRemovedActiveMissions);
        }
Beispiel #8
0
 public HomeController(
     TMDbContext dbContext,
     ICustomerCouponRepository customerCouponRepo,
     IContactRepository contactRepo,
     IMissionRepository missionRepo,
     IMemberRepository memberRepo,
     UserManager <AuthUser> userManager,
     SignInManager <AuthUser> signInManager,
     RoleManager <AuthRole> roleManager,
     IMailService emailSender,
     ISmsService smsSender,
     ILoggerFactory loggerFactory,
     IConfigurationRoot config,
     IHostingEnvironment env)
 {
     _TMDbContext        = dbContext;
     _customerCouponRepo = customerCouponRepo;
     _contactRepo        = contactRepo;
     _missionRepo        = missionRepo;
     _memberRepo         = memberRepo;
     _userManager        = userManager;
     _signInManager      = signInManager;
     _roleManager        = roleManager;
     _emailSender        = emailSender;
     _smsSender          = smsSender;
     _logger             = loggerFactory.CreateLogger <HomeController>();
     _config             = config;
     _env = env;
 }
 public MissionService(IMissionRepository missionRepository, IFractionRepository fractionRepository, IMissionTypeRepository missionTypeRepository, IPausedMissionRepository pausedMissionRepository, IEndedMissionRepository endedMissionRepository)
 {
     _missionRepository       = missionRepository;
     _fractionRepository      = fractionRepository;
     _missionTypeRepository   = missionTypeRepository;
     _endedMissionRepository  = endedMissionRepository;
     _pausedMissionRepository = pausedMissionRepository;
 }
 public MissionService(IUnitOfWork uow, IMissionRepository missionRepository)
 {
     if (uow == null || missionRepository == null)
     {
         throw new ArgumentNullException();
     }
     this.uow = uow;
     this.missionRepository = missionRepository;
 }
 public HomeController(IMissionRepository missionRepository, ICorporationRepository corporationRepository, ISectorRepository sectorRepository, 
                       IUnitRepository unitRepository, IItemRepository itemRepository)
 {
     _missionRepository = missionRepository;
     _corporationRepository = corporationRepository;
     _sectorRepository = sectorRepository;
     _unitRepository = unitRepository;
     _itemRepository = itemRepository;
 }
Beispiel #12
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="FriendBase" /> class.
 /// </summary>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public FriendBase(
     IMissionRepository missionRepository,
     IUserRepository userRepository,
     AppCountersService appCountersService)
 {
     _missionRepository  = missionRepository;
     _userRepository     = userRepository;
     _appCountersService = appCountersService;
 }
 public GameInitializer(IRegionRepository regionRepo,
                        IDroneRepository droneRepo,
                        IMissionRepository missionRepo,
                        ISignalSender signalSender)
 {
     _regionRepo   = regionRepo;
     _droneRepo    = droneRepo;
     _missionRepo  = missionRepo;
     _signalSender = signalSender;
 }
Beispiel #14
0
 public void Init()
 {
     _repository        = new UserIdentityRepository();
     _missionRepository = new MissionRepository();
     _userRepository    = new UserRepository();
     _ratingRepository  = new RatingRepository();
     _service           = new UserIdentityService(_repository);
     _userService       = new UserService(_userRepository, _missionRepository, _ratingRepository, new AppCountersService(new AppCountersRepository()));
     _controller        = new UserIdentityController(_userService, _service, new MailService(null, _repository), null);
 }
Beispiel #15
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="QuestionService" /> class.
 /// </summary>
 /// <param name="questionRepository">The question repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="assignmentService">The assignment service.</param>
 public QuestionService(
     IQuestionRepository questionRepository,
     IUserRepository userRepository,
     IMissionRepository missionRepository,
     AssignmentService assignmentService)
 {
     _questionRepository = questionRepository;
     _userRepository     = userRepository;
     _assignmentService  = assignmentService;
     _missionRepository  = missionRepository;
 }
Beispiel #16
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="UserService" /> class.
 /// </summary>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="ratingRepository">The rating repository.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public UserService(
     IUserRepository userRepository,
     IMissionRepository missionRepository,
     IRatingRepository ratingRepository,
     AppCountersService appCountersService)
 {
     _userRepository     = userRepository;
     _ratingRepository   = ratingRepository;
     _missionRepository  = missionRepository;
     _appCountersService = appCountersService;
 }
 public MissionController(
     IMissionRepository missionRepository,
     IOperationsRepository operationRepository,
     IHubContext <NotificationHub> notificationHub,
     IMapper mapper
     )
 {
     _missionRepository   = missionRepository;
     _operationRepository = operationRepository;
     _notificationHub     = notificationHub;
     _mapper = mapper;
 }
Beispiel #18
0
 public void Init()
 {
     _repository = new MissionRepository();
     _personQualityRepository = new PersonQualityRepository();
     _userRepository          = new UserRepository();
     _ratingRepository        = new RatingRepository();
     _commonPlacesRepository  = new CommonPlacesRepository();
     _commonPlacesService     = new CommonPlacesService(_commonPlacesRepository);
     _ratingService           = new RatingService(_userRepository, _ratingRepository, true);
     _service = new MissionService(_repository, _userRepository, new MissionSetRepository(), new MissionRequestRepository(), new HintRequestRepository(), _ratingService, _commonPlacesRepository);
     _personQualityService = new PersonQualityService(_personQualityRepository);
     _controller           = new MissionController(_personQualityService, _service, _commonPlacesService);
 }
Beispiel #19
0
        /// <summary>
        ///     Updates the user ater mission decline.
        /// </summary>
        /// <param name="missionRequest">The mission request.</param>
        /// <param name="missionRepository">The mission repository.</param>
        /// <param name="appCountersService">The application counters service.</param>
        /// <returns>
        ///     If not empty returns the set id, so active missions need to be populated
        /// </returns>
        public static async Task UpdateUserAfterMissionDecline(
            MissionRequest missionRequest,
            IMissionRepository missionRepository,
            AppCountersService appCountersService = null)
        {
            var pointsDecrease =
                (ushort)
                (missionRequest.Mission.Difficulty * GameConstants.Experience.PerDifficultyPoint
                 * GameConstants.Points.ExtraMultiplier);

            missionRequest.User.Points = (missionRequest.User.Points ?? 0) - pointsDecrease;

            CalculatePersonQualities(missionRequest, false);

            await MissionFinished(missionRequest, false, missionRepository, appCountersService);
        }
Beispiel #20
0
        private static async Task LoadMissionsFromNewSet(
            IMissionRepository missionRepository,
            string newSetId,
            User user)
        {
            var newMissions =
                (await
                 missionRepository.GetMissions(
                     new QueryOptions <Mission>
            {
                Select = mission => new { mission.Id, mission.DependsOn },
                Filter = mission => mission.MissionSetId == newSetId
            }));

            AutoDeclineNewMissions(newSetId, newMissions, user);
        }
Beispiel #21
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="MissionRequestService" /> class.
 /// </summary>
 /// <param name="missionRequestRepository">The mission request repository.</param>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="commonPlacesRepository">The _common places repository.</param>
 /// <param name="ratingService">The rating service.</param>
 /// <param name="notificationService">The notification service.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public MissionRequestService(
     IMissionRequestRepository missionRequestRepository,
     IMissionRepository missionRepository,
     IUserRepository userRepository,
     ICommonPlacesRepository commonPlacesRepository,
     RatingService ratingService,
     NotificationService notificationService,
     AppCountersService appCountersService)
 {
     _missionRequestRepository = missionRequestRepository;
     _missionRepository        = missionRepository;
     _userRepository           = userRepository;
     _ratingService            = ratingService;
     _notificationService      = notificationService;
     _appCountersService       = appCountersService;
     _commonPlacesRepository   = commonPlacesRepository;
 }
Beispiel #22
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="MissionService" /> class.
 /// </summary>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="missionSetRepository">The mission set repository.</param>
 /// <param name="missionRequestRepository">The mission request repository.</param>
 /// <param name="hintRequestRepository">The hint request repository.</param>
 /// <param name="ratingService">The rating service.</param>
 /// <param name="commonPlacesRepository">The common places repository.</param>
 public MissionService(
     IMissionRepository missionRepository,
     IUserRepository userRepository,
     IMissionSetRepository missionSetRepository,
     IMissionRequestRepository missionRequestRepository,
     IHintRequestRepository hintRequestRepository,
     RatingService ratingService,
     ICommonPlacesRepository commonPlacesRepository)
 {
     _missionRepository        = missionRepository;
     _userRepository           = userRepository;
     _ratingService            = ratingService;
     _missionSetRepository     = missionSetRepository;
     _missionRequestRepository = missionRequestRepository;
     _hintRequestRepository    = hintRequestRepository;
     _commonPlacesRepository   = commonPlacesRepository;
 }
Beispiel #23
0
 public DetectedObjectController(
     IDetectedObjectRepository detectedObjectRepository,
     IOperationsRepository operationRepository,
     IMissionRepository missionRepository,
     IUserRepository userRepository,
     IHubContext <NotificationHub> notificationHub,
     IClusteringService clusteringService,
     IMapper mapper
     )
 {
     _detectedObjectRepository = detectedObjectRepository;
     _operationRepository      = operationRepository;
     _missionRepository        = missionRepository;
     _userRepository           = userRepository;
     _clusteringService        = clusteringService;
     _notificationHub          = notificationHub;
     _mapper = mapper;
 }
Beispiel #24
0
        public static async Task <MissionCompletionResult> ProcessIncorrectTry(
            MissionRequest request,
            IMissionRepository missionRepository,
            IMissionRequestRepository missionRequestRepository)
        {
            Expression <Func <MissionRequest, bool> > filter =
                a => a.MissionId == request.MissionId && a.UserId == request.UserId;
            var previousRequiests =
                await missionRequestRepository.GetMissionRequests(new QueryOptions <MissionRequest> {
                Filter = filter
            });

            var tryCount = previousRequiests.Count + 1;

            if (tryCount >= request.Mission.TriesFor1Star)
            {
                request.DeclineReason = "Увы, достигнуто максимальное количество попыток.";
                await RewardsCalculator.UpdateUserAfterMissionDecline(request, missionRepository);

                await missionRequestRepository.AddMissionRequest(request);

                return(new MissionCompletionResult
                {
                    MissionCompletionStatus = MissionCompletionStatus.Fail,
                    Description = request.DeclineReason
                });
            }

            var rejectResult = new MissionCompletionResult
            {
                MissionCompletionStatus =
                    MissionCompletionStatus.IntermediateFail,
                TryCount = tryCount
            };

            var failedRequesResult = await missionRequestRepository.AddMissionRequest(request);

            return(failedRequesResult.Status != OperationResultStatus.Success
                       ? MissionCompletionResult.FromOperationResult(failedRequesResult)
                       : rejectResult);
        }
Beispiel #25
0
        /// <summary>
        ///     Sets the new mission sets.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="missionRepository">The mission repository.</param>
        /// <returns></returns>
        public static async Task SetNewMissionSets(User user, IMissionRepository missionRepository)
        {
            if (user.ActiveMissionSetIds != null && user.ActiveMissionSetIds.Count >= GameConstants.MissionSet.MaxSetsPerUser)
            {
                return;
            }

            MissionSetIdWithOrder newSet;
            var currentOrder = GameConstants.MissionSet.MaxSetsPerUser;

            do
            {
                newSet = user.MissionSetIds.First(s => s.Order == currentOrder);
                user.ActiveMissionSetIds = user.ActiveMissionSetIds ?? new List <string>();
                user.ActiveMissionSetIds.Add(newSet.MissionSetId);
                // go to db to load missions from set, not ideal but for now is ok
                await LoadMissionsFromNewSet(missionRepository, newSet.MissionSetId, user);

                currentOrder++;
            }while (user.ActiveMissionSetIds.Count < GameConstants.MissionSet.MaxSetsPerUser &&
                    newSet.MissionSetId != GameConstants.MissionSet.LastSetId);
        }
 public MissionController(IMissionRepository missionRepository)
 {
     _missRepo = missionRepository;
 }
Beispiel #27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Radar" /> class.
 /// </summary>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="missionRequestRepository">The mission request repository.</param>
 public Radar(IMissionRepository missionRepository, IMissionRequestRepository missionRequestRepository)
 {
     _missionRepository        = missionRepository;
     _missionRequestRepository = missionRequestRepository;
 }
Beispiel #28
0
 public AssignmentService(IMissionSetRepository missionSetRepository, IMissionRepository missionRepository)
 {
     _missionSetRepository = missionSetRepository;
     _missionRepository    = missionRepository;
 }
Beispiel #29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MissionBusiness" /> class.
 /// </summary>
 /// <param name="repository">Implementation of repository</param>
 public MissionBusiness(IMissionRepository repository)
 {
     this.missionRepository = repository;
 }
Beispiel #30
0
 public PlanetService(IPlanetRepository planetRepository, IResourceRepository resourceRepository, IMissionRepository missionRepository)
 {
     _planetRepository   = planetRepository;
     _resourceRepository = resourceRepository;
     _missionRepository  = missionRepository;
 }
Beispiel #31
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Censored"/> class.
 /// </summary>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="appCountersService">The app counters service.</param>
 public Censored(IMissionRepository missionRepository, AppCountersService appCountersService)
 {
     _missionRepository  = missionRepository;
     _appCountersService = appCountersService;
 }