public void Init()
        {
            _userRepository           = new UserRepository();
            _commonPlacesRepository   = new CommonPlacesRepository();
            _missionRepository        = new MissionRepository();
            _missionSetRepository     = new MissionSetRepository();
            _missionRequestRepository = new MissionRequestRepository();
            _appCountersRepository    = new AppCountersRepository();
            _hintRequestRepository    = new HintRequestRepository();
            _ratingRepository         = new RatingRepository();
            var imageProvider = new ImageProvider();

            _imageService          = new ImageService(imageProvider, _userRepository);
            _ratingService         = new RatingService(_userRepository, _ratingRepository, true);
            _appCountersService    = new AppCountersService(_appCountersRepository);
            _service               = new UserService(_userRepository, _missionRepository, _ratingRepository, _appCountersService);
            _missionService        = new MissionService(_missionRepository, _userRepository, _missionSetRepository, _missionRequestRepository, _hintRequestRepository, _ratingService, _commonPlacesRepository);
            _missionRequestService = new MissionRequestService(_missionRequestRepository, _missionRepository, _userRepository, _commonPlacesRepository,
                                                               _ratingService, new NotificationService(new NotificationProvider()), _appCountersService);

            var principal = new ClaimsPrincipal();

            principal.AddIdentity(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Sid, "User1Id") }));
            _controller = new MissionController(_missionService, _missionRequestService, _imageService)
            {
                User = principal
            };
        }
Example #2
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);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="UserIdentityController" /> class.
 /// </summary>
 /// <param name="userService">The user service.</param>
 /// <param name="identityService">The identity service.</param>
 /// <param name="mailService">The mail service.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public UserIdentityController(UserService userService, UserIdentityService identityService, MailService mailService, AppCountersService appCountersService)
 {
     _userService        = userService;
     _identityService    = identityService;
     _mailService        = mailService;
     _appCountersService = appCountersService;
 }
Example #4
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);
        }
Example #5
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;
 }
Example #6
0
 private static async Task CheckLastSetCounters(
     MissionRequest missionRequest,
     AppCountersService appCountersService)
 {
     if (appCountersService != null && !missionRequest.User.ActiveMissionIds.Any() &&
         !missionRequest.User.ActiveMissionSetIds.Any() &&
         !string.IsNullOrEmpty(missionRequest.User.RadrugaColor))
     {
         await appCountersService.UserHasFinished();
     }
 }
Example #7
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);
        }
Example #8
0
        public void Init()
        {
            _repository         = new KindActionRepository();
            _userRepository     = new UserRepository();
            _ratingRepository   = new RatingRepository();
            _ratingService      = new RatingService(_userRepository, _ratingRepository, true);
            _service            = new KindActionService(_repository, _userRepository, _ratingService);
            _imageService       = new ImageService(new ImageProvider(), new UserRepository());
            _appCountersService = new AppCountersService(new AppCountersRepository());
            var principal = new ClaimsPrincipal();

            principal.AddIdentity(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Sid, "User1Id") }));
            _controller = new KindActionController(_service, _imageService, _appCountersService)
            {
                User = principal
            };
        }
Example #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="QuestionController" /> class.
 /// </summary>
 /// <param name="questionService">The question service.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public QuestionController(QuestionService questionService, AppCountersService appCountersService)
 {
     _questionService    = questionService;
     _appCountersService = appCountersService;
 }
Example #10
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;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="KindActionController" /> class.
 /// </summary>
 /// <param name="kindActionService">The kindAction service.</param>
 /// <param name="imageService">The image service</param>
 /// <param name="appCountersService">The application counters service.</param>
 public KindActionController(KindActionService kindActionService, ImageService imageService, AppCountersService appCountersService)
 {
     _imageService       = imageService;
     _kindActionService  = kindActionService;
     _appCountersService = appCountersService;
 }
Example #12
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="CommandPoint" /> class.
 /// </summary>
 /// <param name="missionRepository">The mission repository.</param>
 /// <param name="appCountersService">The application counters service.</param>
 public CommandPoint(IMissionRepository missionRepository, AppCountersService appCountersService, PlaceIdService placeIdService)
 {
     _missionRepository  = missionRepository;
     _appCountersService = appCountersService;
     _placeIdService     = placeIdService;
 }