示例#1
0
        public Account Registration(RegistrationClientData clientData)
        {
            _rightsManager.CheckRole(AccountRole.Admin);
            var existing = Get(clientData.Login);

            if (clientData.Status != AccountStatus.Blocked)
            {
                clientData.Status = AccountStatus.Active;
            }

            if (existing != null)
            {
                return(SetAccountProperties(clientData));
            }

            var newUser = new Account(clientData.Login, AccountRole.Person);

            var result = _userManager.Create(newUser, clientData.Password);

            Try.Condition(result.Succeeded, $"Не удалось создать счет {clientData.Login}, {result.Errors.FirstOrDefault()}");
            UserContext.Data.SaveChanges();

            UserContext.AddGameEvent(clientData.Login, GameEventType.None, $"Аккаунт создан");
            return(SetAccountProperties(clientData));
        }
示例#2
0
        public async Task <bool> RegistrationAsync(RegistrationClientData clientData)
        {
            var   registrationTask = _registrationCommand.ExecuteAsync(this, clientData);
            await registrationTask;

            if (!registrationTask.IsCompleted)
            {
                return(false);
            }

            if (!registrationTask.Result.IsSuccessful)
            {
                return(false);
            }

            var   loginTask = LoginAsync(clientData.Email, clientData.Password);
            await loginTask;

            if (!loginTask.IsCompleted)
            {
                return(false);
            }

            return(loginTask.Result);
        }
示例#3
0
        public Account SetAccountProperties(RegistrationClientData data)
        {
            UserContext.Rights.CheckRole(AccountRole.Admin);

            var editAccount = UserContext.Accounts.GetOrFail(data.Login);

            if (data.Role != null && data.Role != editAccount.Role)
            {
                editAccount.Role = data.Role.Value;
                UserContext.AddGameEvent(editAccount.Login, GameEventType.Rights, $"Изменен тип счета на {editAccount.Role}");
            }

            if (data.Status != null && data.Status != editAccount.Status)
            {
                editAccount.Status = data.Status.Value;
                UserContext.AddGameEvent(editAccount.Login, GameEventType.Rights, $"Изменен статус счета на {editAccount.Status}");
            }

            if (!String.IsNullOrEmpty(data.Fullname))
            {
                editAccount.Fullname = data.Fullname;
            }

            if (!String.IsNullOrEmpty(data.Email))
            {
                editAccount.Email = data.Email;
            }

            if (!String.IsNullOrEmpty(data.ParentID))
            {
                editAccount.ParentID = data.ParentID;
            }

            if (!String.IsNullOrEmpty(data.Alias))
            {
                editAccount.Alias = data.Alias;
            }

            editAccount.Cash = data.Cash ?? editAccount.Cash;

            if (data.Insurance != null && data.InsuranceLevel != null)
            {
                editAccount.Insurance      = data.Insurance.Value;
                editAccount.InsuranceLevel = editAccount.Insurance.SetLevel(data.InsuranceLevel);
            }

            if (!String.IsNullOrEmpty(data.Password))
            {
                _userManager.NewPassword(editAccount.Login, data.Password);
            }

            AddWorkPlace(editAccount, data);

            UserContext.Data.SaveChanges();
            return(editAccount);
        }
示例#4
0
        private void AddWorkPlace(Account acc, RegistrationClientData data)
        {
            if (String.IsNullOrEmpty(data.Workplace) || data.SalaryLevel == null)
            {
                return;
            }

            if (_regAlias.ContainsKey(data.Workplace))
            {
                data.Workplace = _regAlias[data.Workplace];
            }

            var workPlace = Get(data.Workplace);

            Try.NotNull(workPlace, $"Не удалось добавить место работы {data.Workplace}, счет {acc.Login}");
            if (workPlace == null)
            {
                UserContext.AddGameEvent(acc.Login, GameEventType.None,
                                         $"Не удалось добавить место работы {data.Workplace}");
                return;
            }

            var oldPayments = UserContext.Data.Payments.Where(x => x.Receiver == acc.Login).ToList();

            oldPayments.ForEach(x =>
            {
                UserContext.Payments.LogPaymentEvent(x, true);
                UserContext.Data.Payments.Remove(x);
            });

            var payment = new Payment(workPlace, acc, data.SalaryLevel.Value);

            UserContext.Data.Payments.Add(payment);
            UserContext.Payments.LogPaymentEvent(payment);

            if (data.IsAdmin == true)
            {
                UserContext.Rights.SetAccountAccess_Checked(workPlace, acc, AccountAccessRoles.Admin);
            }
        }
示例#5
0
 public IHttpActionResult SetAccountProperties(RegistrationClientData clientData)
 {
     return(Ok(UserContext.Accounts.SetAccountProperties(clientData)));
 }
示例#6
0
 public IHttpActionResult Registration(RegistrationClientData clientData)
 {
     return(Ok(UserContext.Accounts.Registration(clientData)));
 }