Exemple #1
0
        public void ProcessSignup()
        {
            _client.Send(HeadServerToClientMessage.AckSignUpReq);
            while (_client.Available == 0)
            {
                Thread.Sleep(50);
            }
            var request_data = _client.Receive <UserEntry>();
            // FIX ME
            SignupError  result  = _auth.TrySignUp(IPAddress.Loopback, request_data);
            SignupResult to_send = null;

            if (result == SignupError.AllOk)
            {
                to_send = new SignupResult(
                    HeadServerToClientMessage.AckSignUp, result);
            }
            else
            {
                to_send = new SignupResult(
                    HeadServerToClientMessage.DenySignUp, result);
            }
            _client.Send(to_send);
            _client.Close();
            return;
        }
Exemple #2
0
        public async Task <SignupResult> RegisterUserAsync(SignupForm model)
        {
            var newUser = new IdentityUser
            {
                LockoutEnabled = true,
                UserName       = model.UserName
            };

            var emailAttr = new EmailAddressAttribute();

            if (emailAttr.IsValid(model.UserName))
            {
                newUser.Email = model.UserName;
            }

            var result = await _userManager.CreateAsync(newUser, model.Password);

            var signupResult = new SignupResult {
                IsSuccess = result.Succeeded
            };

            if (!result.Succeeded)
            {
                signupResult.Errors = result.Errors.Select(x => x.Description).ToList();
            }
            else
            {
                signupResult.Id = newUser.Id;
            }

            return(signupResult);
        }
        private async void signupBtn_ClickAsync(object sender, EventArgs e)
        {
            User user = new User();

            user.firstName  = nameBox.Text;
            user.secondName = surnameBox.Text;
            user.login      = loginBox.Text;
            user.coachCode  = coachCodeBox.Text;

            foreach (Control item in Controls)
            {
                item.Enabled = false;
            }

            Cursor = Cursors.WaitCursor;
            SignupResult result = await db.Signup(user, pswdBox.Text);

            Cursor = Cursors.Default;

            foreach (Control item in Controls)
            {
                item.Enabled = true;
            }

            switch (result)
            {
            case SignupResult.AlreadyExists:
                MessageBox.Show("Пользователь с таким логином уже существует");
                break;

            case SignupResult.CoachCodeWrong:
                MessageBox.Show("Неверный код тренера");
                break;

            case SignupResult.DataIncomplete:
                MessageBox.Show("Заполните все необходимые поля");
                break;

            case SignupResult.DbError:
                MessageBox.Show("Ошибка базы данных");
                break;

            case SignupResult.Ok:
                Close();
                break;
            }
        }
        public async Task <SignupResult> Add(SignupInput signupInput)
        {
            SignupResult signupResult = new SignupResult()
            {
                Status = OperationStatus.NoError, Errors = new List <Error>(), ResourceId = ""
            };

            if (signupInput == null)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.EmptyEntry, DetailError = "No Signu up Info Provided.", MembershipName = string.Empty
                });
                return(signupResult);
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(signupInput.Email))
                {
                    // Todo:
                    // Email rule check -  at least have @ and .
                }

                if (!string.IsNullOrWhiteSpace(signupInput.Email) && signupInput.Email.ToLowerInvariant().Contains("@yahoo.com"))
                {
                    // Not support yahoo
                    signupResult.Status = OperationStatus.ErrorsWhenAdding;
                    signupResult.Errors.Add(new Error {
                        ErrorType = ErrorType.DataInvalid, DetailError = "Email is not supported.", MembershipName = "Email"
                    });
                    return(signupResult);
                }
            }


            var result = await this._iSignup.Add(signupInput);

            return(result);
        }
Exemple #5
0
        public async Task <SignupResult> Add(SignupInput signupInput)
        {
            SignupResult signupResult = new SignupResult()
            {
                Status = OperationStatus.NoError, Errors = new List <Error>(), ResourceId = ""
            };

            if (signupInput == null)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.EmptyEntry, DetailError = "No Signu up Info Provided.", MembershipName = string.Empty
                });
                return(signupResult);
            }

            if (string.IsNullOrWhiteSpace(signupInput.FirstName))
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "First Name is Required", MembershipName = "FirstName"
                });
            }

            if (string.IsNullOrWhiteSpace(signupInput.LastName))
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Last Name is Required", MembershipName = "LastName"
                });
            }

            if (string.IsNullOrWhiteSpace(signupInput.Email))
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Email is Required", MembershipName = "Email"
                });
            }

            if (signupInput.FunEventId <= 0)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Event is Required", MembershipName = "FunEventId"
                });
            }

            if (!string.IsNullOrWhiteSpace(signupInput.FirstName) && signupInput.FirstName.Length > 10)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "First Name is more than 10 letters", MembershipName = "FirstName"
                });
            }

            if (!string.IsNullOrWhiteSpace(signupInput.LastName) && signupInput.LastName.Length > 10)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Last Name is more than 10 letters", MembershipName = "LastName"
                });
            }

            if (!string.IsNullOrWhiteSpace(signupInput.Email) && signupInput.Email.Length > 30)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Email is more than 30 letters", MembershipName = "Email"
                });
            }

            if (!string.IsNullOrWhiteSpace(signupInput.Comments) && signupInput.Comments.Length > 100)
            {
                signupResult.Status = OperationStatus.ErrorsWhenAdding;
                signupResult.Errors.Add(new Error {
                    ErrorType = ErrorType.DataInvalid, DetailError = "Comments is more than 30 letters", MembershipName = "Comments"
                });
            }

            if (signupResult.Status != OperationStatus.NoError)
            {
                return(signupResult);
            }

            try
            {
                using (HomeworkEntities context = new HomeworkEntities())
                {
                    using (var dbContextTransaction = context.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        string queryEvent    = "SELECT FunEventId FROM FunEvents WITH (UPDLOCK) WHERE FunEventId = {0}";
                        var    existingEvent = await context.Database.SqlQuery <int>(queryEvent, signupInput.FunEventId).SingleOrDefaultAsync();

                        if (existingEvent == 0)
                        {
                            signupResult.Status = OperationStatus.ErrorsWhenAdding;
                            signupResult.Errors.Add(new Error {
                                ErrorType = ErrorType.DataInvalid, DetailError = "Event is not Existing", MembershipName = "FunEventId"
                            });
                            return(signupResult);
                        }

                        string   query        = "SELECT FunEventId, Email FROM Signups WITH (UPDLOCK) WHERE FunEventId = {0} AND Email = {1}";
                        object[] parameters   = { signupInput.FunEventId, signupInput.Email };
                        var      existingItem = await context.Database.SqlQuery <Row>(query, parameters).SingleOrDefaultAsync();

                        if (existingItem != null)
                        {
                            signupResult.Status     = OperationStatus.DuplicatedWhenAdding;
                            signupResult.ResourceId = string.Format("{0}###{1}", existingItem.Email, existingItem.FunEventId);
                            return(signupResult);
                        }

                        Signup signup = new Signup();
                        signup.FirstName       = signupInput.FirstName;
                        signup.LastName        = signupInput.LastName;
                        signup.Email           = signupInput.Email;
                        signup.FunEventId      = signupInput.FunEventId;
                        signup.Comments        = signupInput.Comments;
                        signup.CreatedDatetime = DateTime.Now;
                        context.Signups.Add(signup);

                        try
                        {
                            await context.SaveChangesAsync();

                            dbContextTransaction.Commit();
                            signupResult.Status     = OperationStatus.Added;
                            signupResult.ResourceId = string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId);
                        }
                        catch (Exception ex)
                        {
                            dbContextTransaction.Rollback();
                            signupResult = new SignupResult()
                            {
                                Errors = new List <Error> {
                                }, Status = OperationStatus.DBError
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // Permission issue..
                throw ex;
            }

            return(signupResult);
        }