Example #1
0
        /// <summary>
        /// Проверка срока действия тарифа
        /// </summary>
        /// <param name="isTimer">Признак запуска таймера</param>
        public void CheckProfilesForTariffExpiring(object isTimer = null)
        {
            using (_dbContext)
            {
                var iQuery = _dbContext.Profiles
                             .Include(p => p.Tariff)
                             .Where(p => p.Tariff.AmounfOfDays != 0 &&
                                    !p.IsHolded && p.IsEnabled);

                var currDate = DateTime.Now;
                iQuery.ForEachAsync(async p =>
                {
                    try
                    {
                        await CheckTariffStatehAsync(p);
                        _dbContext.Update(p);
                    }
                    catch (Exception ex)
                    { }
                }).Wait();

                try
                {
                    _dbContext.SaveChanges();
                }
                catch (Exception ex)
                { }
            }

            if (isTimer != null)
            {
                Console.WriteLine($"Tariff regulator by timer is success run. ({DateTime.Now})");
            }
        }
        public async Task <IActionResult> OnPostAsync()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Не могу загрузить аккаунт с ID '{_userManager.GetUserId(User)}'."));
            }

            if (!ModelState.IsValid)
            {
                await LoadAsync(user);

                return(Page());
            }

            var profile = await _dbContext.Profiles
                          .Include(p => p.Account)
                          .AsNoTracking()
                          .FirstOrDefaultAsync(p => p.Account.Id.Equals(user.Id));

            profile.FirstName  = Input.FName;
            profile.SecondName = Input.SName;
            profile.Patronymic = Input.Patronymic;

            _dbContext.Update(profile);
            await _dbContext.SaveChangesAsync();

            StatusMessage = "Ваша персональная информация успешно изменена.";
            return(RedirectToPage());
        }
Example #3
0
        /// <summary>
        /// Инициализация оплат
        /// </summary>
        /// <returns></returns>
        private async Task PaymentsInitAsync()
        {
            if (_dbContext.Payments.Count() == 0)
            {
                var casherRole = await _roleManager.FindByNameAsync("casher");

                var cahserUserRole = await _dbContext.UserRoles
                                     .FirstOrDefaultAsync(ur => ur.RoleId.Equals(casherRole.Id));

                var casherProfile = await _dbContext.Profiles
                                    .Include(p => p.User)
                                    .FirstOrDefaultAsync(p => p.User.Id.Equals(cahserUserRole.UserId));

                for (int i = 0; i < 200; i++)
                {
                    var profileToPaymet = await _dbContext.Profiles
                                          .Include(p => p.Tariff)
                                          .Where(p => !p.Tariff.Name.Equals("Коллегиальный"))
                                          .OrderBy(o => Guid.NewGuid())
                                          .FirstOrDefaultAsync();

                    var payment = new Payment()
                    {
                        SourceProfile      = casherProfile,
                        DestinationProfile = profileToPaymet,
                        Role    = casherRole,
                        Amount  = profileToPaymet.Tariff.Price + 10,
                        Comment = "Инициализатор"
                    };

                    profileToPaymet.BalanceOfCash += payment.Amount;

                    await Task.Run(() =>
                    {
                        _dbContext.Update(profileToPaymet);
                        _dbContext.Add(payment);
                    });
                }

                await _dbContext.SaveChangesAsync();
            }
        }