Beispiel #1
0
        public async Task <IHttpActionResult> Post([FromBody] SignupInput signupInput)
        {
            SignUpServiceClient client = new SignUpServiceClient();
            var result = await client.AddAsync(signupInput);

            if (result.Status == OperationStatus.Added)
            {
                return(CreatedAtRoute <SignupResult>("DefaultApi", new { id = result.ResourceId }, result));
            }

            if (result.Status == OperationStatus.DuplicatedWhenAdding)
            {
                return(Content <SignupResult>(System.Net.HttpStatusCode.Conflict, result));
            }

            if (result.Status == OperationStatus.ErrorsWhenAdding)
            {
                ModelStateDictionary model = GetError(result);
                return(BadRequest(model));
            }

            if (result.Status == OperationStatus.DBError)
            {
                // {"Message":"An error has occurred.","ExceptionMessage":"DB Internal Error","ExceptionType":"System.Exception","StackTrace":null}
                return(InternalServerError(new Exception("DB Internal Error")));
            }

            return(InternalServerError(new Exception("Not handled request: " + result.Status.ToString())));
        }
        public async Task TestMethod_Post_InvalidModelStateResult_BadRequest()
        {
            var controller = new SignupController();

            SignupInput signupInput = new SignupInput()
            {
                Comments   = "",
                Email      = "",
                FirstName  = "Looooooooooooooong",
                LastName   = "",
                FunEventId = 0
            };

            var actionResult = await controller.Post(signupInput);

            var createdResult = actionResult as InvalidModelStateResult;

            Assert.IsNotNull(createdResult);
            Assert.IsNotNull(createdResult.ModelState);
            ModelStateDictionary info = createdResult.ModelState as ModelStateDictionary;

            Assert.IsTrue(info.Count == 4);

            // Todo: check Details
        }
Beispiel #3
0
        public async Task TestMethod_Can_Not_Signup_A_Person_With_Too_Long()
        {
            ISignup     signup      = new SignMeUp();
            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput
            {
                FirstName  = "FirstNameFirstName",
                LastName   = "LastNameLastNameLastName  ",
                Email      = "EmailEmailEmailEmailEmailEmailEmailEmailEmailEmailEmail",
                FunEventId = 1,
                Comments   =
                    "I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids.I will bring my two kids."
            };
            var signupResult = await signup.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.ErrorsWhenAdding);
            Assert.IsTrue(signupResult.Errors.Count == 4);

            Assert.IsTrue(signupResult.Errors[0].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[0].DetailError == "First Name is more than 10 letters");
            Assert.IsTrue(signupResult.Errors[0].MembershipName == "FirstName");

            Assert.IsTrue(signupResult.Errors[1].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[1].DetailError == "Last Name is more than 10 letters");
            Assert.IsTrue(signupResult.Errors[1].MembershipName == "LastName");

            Assert.IsTrue(signupResult.Errors[2].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[2].DetailError == "Email is more than 30 letters");
            Assert.IsTrue(signupResult.Errors[2].MembershipName == "Email");

            Assert.IsTrue(signupResult.Errors[3].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[3].DetailError == "Comments is more than 30 letters");
            Assert.IsTrue(signupResult.Errors[3].MembershipName == "Comments");
        }
        public async Task TestMethod_Post_Created_Duplicated_NegotiatedContentResult_HttpStatusCodeConflict()
        {
            // Created one
            var    controller = new SignupController();
            Random r          = new Random();

            SignupInput signupInput = new SignupInput()
            {
                Comments   = "",
                Email      = "*****@*****.**" + r.Next(1234, 123456789),
                FirstName  = "Yan",
                LastName   = "Wang",
                FunEventId = 101
            };
            string resourceId = signupInput.Email + "###" + signupInput.FunEventId;

            var actionResult = await controller.Post(signupInput);

            var result = actionResult as CreatedAtRouteNegotiatedContentResult <SignupResult>;

            Assert.IsNotNull(result);
            Assert.AreEqual("DefaultApi", result.RouteName);
            Assert.AreEqual(result.Content.ResourceId, resourceId);
            Assert.IsTrue(result.Content.Status == OperationStatus.Added);

            // Trying to create again
            var actionResultAgain = await controller.Post(signupInput);

            var createdResultAgain = actionResultAgain as NegotiatedContentResult <SignupResult>;

            Assert.IsNotNull(createdResultAgain); // Check Type
            Assert.IsTrue(createdResultAgain.StatusCode == System.Net.HttpStatusCode.Conflict);
            Assert.IsTrue(createdResultAgain.Content.ResourceId == resourceId);
            Assert.IsTrue(createdResultAgain.Content.Status == OperationStatus.DuplicatedWhenAdding);
        }
Beispiel #5
0
        public CommonRtn signup([FromForm] SignupInput input)
        {
            var exisitUser = (from user in this.sysContext.users where user.phone == input.phone select user).Count();
            var message    = (from msg in this.sysContext.messages where msg.phone == input.phone orderby msg.createTime descending select msg).First();

            if (message == null)
            {
                return(CommonRtn.Error("请先发送短信验证码"));
            }
            if (message.code != input.authcode)
            {
                return(CommonRtn.Error("短信验证码错误"));
            }
            if (exisitUser > 0)
            {
                return(new CommonRtn {
                    success = false, message = "用户已经注册"
                });
            }
            else
            {
                var user = new User
                {
                    phone         = input.phone,
                    loginPassword = DESEncrypt.Encrypt(input.loginPassword),
                    id            = Guid.NewGuid().ToString()
                };
                this.sysContext.users.Add(user);
                this.sysContext.SaveChanges();
                return(new CommonRtn {
                    success = true, message = "注册成功"
                });
            }
        }
Beispiel #6
0
        private static IList <string> ValidateSignupInput(SignupInput signupInput)
        {
            var listError = new List <string>();

            if (string.IsNullOrWhiteSpace(signupInput.FirstName))
            {
                listError.Add("Firt Name not informed");
            }
            if (string.IsNullOrWhiteSpace(signupInput.LastName))
            {
                listError.Add("Last Name not informed");
            }
            if (string.IsNullOrWhiteSpace(signupInput.Email))
            {
                listError.Add("Email not informed");
            }
            else
            {
                try
                {
                    var email = new System.Net.Mail.MailAddress(signupInput.Email);
                }
                catch
                {
                    listError.Add("Email invalid");
                }
            }
            if (string.IsNullOrWhiteSpace(signupInput.Password))
            {
                listError.Add("Password not informed");
            }
            //if (signupInput.Phones != null && !signupInput.Phones.Any())
            //{
            //    listError.Add("Phone not informed");
            //}
            //else
            //{
            //    //if (signupInput.Phones.Any(a => !a.AreaCode.HasValue))
            //    //{
            //    //    listError.Add("Phone informed without CodeArea");

            //    //}
            //    //if (signupInput.Phones.Any(a => string.IsNullOrWhiteSpace(a.CountryCode)))
            //    //{
            //    //    listError.Add("Phone not informed without CountryCode");

            //    //}
            //    //if (signupInput.Phones.Any(a => !a.Number.HasValue))
            //    //{
            //    //    listError.Add("Phone not informed without Number");

            //    //}
            //}

            return(listError);
        }
        private static async Task InitializeAsync()
        {
            ISignup   signup1  = new SignMeUp();
            IFunEvent funEvent = new SignMeUp();
            ISignup   signup   = new SignupBusiness(signup1, funEvent); // <=========

            SignMeUp help = signup1 as SignMeUp;

            help.TestingHelper();

            ExpectedList = new List <SignupInput>();
            List <Task <SignupResult> > tasks = new List <Task <SignupResult> >();

            // Signup - Diff Persons sign up same events
            for (int i = 0; i <= 10; i++)
            {
                // Create one person.
                string      random      = Guid.NewGuid().ToString();
                SignupInput signupInput = new SignupInput
                {
                    FirstName = random.Substring(1, 3) + UnitTest_Business_Integrated.FirstName + random.Substring(3, 3),
                    LastName  = random.Substring(6, 3) + UnitTest_Business_Integrated.LastName + random.Substring(10, 3),
                    Email     = random.Substring(1, 10) + "@business.com",
                    Comments  = ""
                };

                // Signup - Same person signs up 3 events.
                SignupInput signupInput1 = new SignupInput
                {
                    FirstName = signupInput.FirstName,
                    LastName  = signupInput.LastName,
                    Email     = signupInput.Email,
                    Comments  = signupInput.Comments
                };
                ExpectedList.Add(signupInput1);
                signupInput1.FunEventId = 100;
                var task1 = signup.Add(signupInput1);
                tasks.Add(task1);

                SignupInput signupInput2 = new SignupInput
                {
                    FirstName = signupInput.FirstName,
                    LastName  = signupInput.LastName,
                    Email     = signupInput.Email,
                    Comments  = signupInput.Comments
                };
                ExpectedList.Add(signupInput2);
                signupInput2.FunEventId = 101;
                var task2 = signup.Add(signupInput2);
                tasks.Add(task2);
            }

            await Task.WhenAll(tasks);
        }
Beispiel #8
0
        public async Task TestMethod_Can_Signup_A_Person_Successfully()
        {
            ISignup     signup      = new SignMeUp();
            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "Yan", LastName = "Wang", Email = random.Substring(1, 10) + "@email.com", FunEventId = 100, Comments = "I will bring my two kids."
            };
            var signupResult = await signup.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.Added);
            Assert.IsTrue(signupResult.Errors.Count == 0);
            Assert.IsTrue(signupResult.ResourceId == string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId));
        }
Beispiel #9
0
        public async Task TestMethod_Can_Signup_A_Person_Successfully()
        {
            ISignUpService wcf = new SignUpService();

            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "Wcf", LastName = "Test", Email = random.Substring(1, 10) + "@wcf.com", FunEventId = 100, Comments = "Created by Wcf"
            };

            var signupResult = await wcf.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.Added);
            Assert.IsTrue(signupResult.Errors.Count == 0);
            Assert.IsTrue(signupResult.ResourceId == string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId));
        }
Beispiel #10
0
        public async Task TestMethod_Can_Not_Signup_Person_With_Not_Existing_Event()
        {
            int         notExistingEvent = int.MaxValue - 1;
            ISignup     signup           = new SignMeUp();
            string      random           = Guid.NewGuid().ToString();
            SignupInput signupInput      = new SignupInput {
                FirstName = "Yan", LastName = "Wang", Email = random.Substring(1, 10) + "@email.com", FunEventId = notExistingEvent
            };
            var signupResult = await signup.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.ErrorsWhenAdding);
            Assert.IsTrue(signupResult.Errors.Count == 1);
            Assert.IsTrue(signupResult.Errors[0].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[0].MembershipName == "FunEventId");
            Assert.IsTrue(signupResult.Errors[0].DetailError == "Event is not Existing");
        }
        public async Task TestMethod_Can_Signup_A_Person_Successfully()
        {
            ISignup   signup   = new SignMeUp();
            IFunEvent funEvent = new SignMeUp();
            ISignup   business = new SignupBusiness(signup, funEvent);

            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "Business", LastName = "Test", Email = random.Substring(1, 10) + "@email.com", FunEventId = 100, Comments = "Created by Business"
            };

            var signupResult = await business.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.Added);
            Assert.IsTrue(signupResult.Errors.Count == 0);
            Assert.IsTrue(signupResult.ResourceId == string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId));
        }
        public async Task TestMethod_Can_Not_Signup_A_Person_With_Yahoo_Email()
        {
            ISignup   signup   = new SignMeUp();
            IFunEvent funEvent = new SignMeUp();
            ISignup   business = new SignupBusiness(signup, funEvent);

            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "Business", LastName = "Test", Email = random.Substring(1, 10) + "@YaHoO.cOm", FunEventId = 100, Comments = "Created by Business"
            };

            var signupResult = await business.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.ErrorsWhenAdding);
            Assert.IsTrue(signupResult.Errors.Count == 1);
            Assert.IsTrue(signupResult.Errors[0].ErrorType == ErrorType.DataInvalid);
            Assert.IsTrue(signupResult.Errors[0].MembershipName == "Email");
            Assert.IsTrue(signupResult.Errors[0].DetailError == "Email is not supported.");
        }
Beispiel #13
0
        public async Task TestMethod_Can_Not_SignUp_Same_Email_Twice_Under_Same_Event()
        {
            ISignup     signup      = new SignMeUp();
            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "Yan", LastName = "Wang", Email = random.Substring(1, 10) + "@email.com", FunEventId = 100
            };
            var signupResult = await signup.Add(signupInput);

            Assert.IsTrue(signupResult.Status == OperationStatus.Added);
            Assert.IsTrue(signupResult.Errors.Count == 0);
            Assert.IsTrue(signupResult.ResourceId == string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId));

            // Try again
            var signupResultAgain = await signup.Add(signupInput);

            Assert.IsTrue(signupResultAgain.Status == OperationStatus.DuplicatedWhenAdding);
            Assert.IsTrue(signupResultAgain.Errors.Count == 0);
            Assert.IsTrue(signupResultAgain.ResourceId == string.Format("{0}###{1}", signupInput.Email, signupInput.FunEventId));
        }
Beispiel #14
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);
            }
            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);
        }
Beispiel #15
0
        public JsonResult Signup([FromBody] SignupInput signupInput)
        {
            var listError = ValidateSignupInput(signupInput);

            if (listError.Any())
            {
                return(Json(Utils.Utils.Instance.ResultMessage(string.Join(",", listError), false, 403)));
            }

            var hasEmail = _userService.Handle(new CheckHasEmail {
                Email = signupInput.Email
            });

            if (hasEmail)
            {
                return(Json(Utils.Utils.Instance.ResultMessage("E-mail already exists", false, 403)));
            }

            var saveUser = new SaveUser
            {
                Email     = signupInput.Email,
                CreatedAt = DateTime.Now,
                FirstName = signupInput.FirstName,
                LastName  = signupInput.LastName,
                Password  = signupInput.Password,
                Phones    = signupInput.Phones.Select(s =>
                                                      new UserContact
                {
                    CodeArea    = s.AreaCode.Value,
                    CountryCode = s.CountryCode,
                    Number      = s.Number.Value
                }).ToList()
            };

            var newuser = _userService.Handle(saveUser);

            return(Json(Utils.Utils.Instance.ResultMessage($"User created successfully, userId:{newuser.Id}", true, 201)));
        }
Beispiel #16
0
        public async Task TestMethod_Can_Signup_A_Person_Successfully_OnlyOnce_WhenTryingToRepeat()
        {
            ISignup signup = new SignMeUp();
            List <Task <SignupResult> > tasks = new List <Task <SignupResult> >();
            string      random      = Guid.NewGuid().ToString();
            SignupInput signupInput = new SignupInput {
                FirstName = "ONLY", LastName = "ONE", Email = random.Substring(1, 10) + "@email.com", FunEventId = 100, Comments = "ONly ONe"
            };

            for (int i = 0; i < 100; i++)
            {
                var task = signup.Add(signupInput);
                tasks.Add(task);
            }

            await Task.WhenAll(tasks);

            int total = 0;
            int dup   = 0;

            foreach (var t in tasks)
            {
                if (t.Result.Status == OperationStatus.Added)
                {
                    total++;
                }
                else if (t.Result.Status == OperationStatus.DuplicatedWhenAdding)
                {
                    dup++;
                }
                else
                {
                }
            }

            Assert.IsTrue(total == 1);
            Assert.IsTrue(dup == 99);
        }
        public async Task TestMethod_Post_InvalidModelStateResult_BadRequest_Not_ExistingEvent()
        {
            var controller = new SignupController();

            SignupInput signupInput = new SignupInput()
            {
                Comments   = "",
                Email      = "*****@*****.**",
                FirstName  = "ABC",
                LastName   = "def",
                FunEventId = 9999
            };

            var actionResult = await controller.Post(signupInput);

            var createdResult = actionResult as InvalidModelStateResult;

            Assert.IsNotNull(createdResult);
            Assert.IsNotNull(createdResult.ModelState);
            ModelStateDictionary info = createdResult.ModelState as ModelStateDictionary;

            Assert.IsTrue(info.Count == 1);
        }
        public async Task TestMethod_Post_CreatedAtRoute()
        {
            var    controller = new SignupController();
            Random r          = new Random();

            SignupInput signupInput = new SignupInput()
            {
                Comments   = "",
                Email      = "*****@*****.**" + r.Next(1234, 123456789),
                FirstName  = "Yan",
                LastName   = "Wang",
                FunEventId = 101
            };
            string resourceId = signupInput.Email + "###" + signupInput.FunEventId;

            var actionResult = await controller.Post(signupInput);

            var result = actionResult as CreatedAtRouteNegotiatedContentResult <SignupResult>;

            Assert.IsNotNull(result);
            Assert.AreEqual("DefaultApi", result.RouteName);
            Assert.AreEqual(result.Content.ResourceId, resourceId);
            Assert.IsTrue(result.Content.Status == OperationStatus.Added);
        }
        public async Task <SignupResult> Add(SignupInput signupInput)
        {
            var signup = Factory.CreateSignup();

            return(await signup.Add(signupInput));
        }
Beispiel #20
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);
        }
Beispiel #21
0
 public Task <StudentDto> Signup(SignupInput input)
 {
     throw new NotImplementedException();
 }
Beispiel #22
0
 public async Task <SignupResult> Add(SignupInput signupInput)
 {
     throw new NotImplementedException();
 }
        public async Task TestMethod_Get()
        {
            // Prepare data
            var         controller  = new SignupController();
            Random      r           = new Random();
            string      searchKey   = Guid.NewGuid().ToString().Substring(1, 10);
            SignupInput signupInput = new SignupInput()
            {
                Comments  = "",
                Email     = "*****@*****.**" + r.Next(1234, 123456789),
                FirstName = searchKey,
                LastName  = "Wang",
            };

            string emailBackup = signupInput.Email;

            signupInput.FunEventId = 100;
            var task1 = controller.Post(signupInput);
            await Task.WhenAll(task1);

            signupInput.FunEventId = 101;
            var task2 = controller.Post(signupInput);
            await Task.WhenAll(task2);

            signupInput.FunEventId = 102;
            var task3 = controller.Post(signupInput);
            await Task.WhenAll(task3);

            // Noise
            signupInput.FunEventId = 100;
            signupInput.Email      = "ThisisNoise@g" + r.Next(123456789, 223456789);
            signupInput.FirstName  = "NotMatched";
            var task4 = controller.Post(signupInput);
            await Task.WhenAll(task4);

            //
            // Query - By First Name
            //
            QueryInputFromClient queryInputFromClient = new QueryInputFromClient();

            queryInputFromClient.FirstName = searchKey;
            var queryResult = await controller.Get(queryInputFromClient);

            var list = queryResult.ToList();

            Assert.IsTrue(list.Count() == 3);
            // Same person
            Assert.IsTrue(list[0].Email == emailBackup);
            Assert.IsTrue(list[1].Email == emailBackup);
            Assert.IsTrue(list[2].Email == emailBackup);

            Assert.IsTrue(list[0].FirstName.Contains(searchKey));
            Assert.IsTrue(list[1].FirstName.Contains(searchKey));
            Assert.IsTrue(list[2].FirstName.Contains(searchKey));

            // Different events
            Assert.IsTrue(list[0].FunEventId != list[1].FunEventId);
            Assert.IsTrue(list[1].FunEventId != list[2].FunEventId);
            Assert.IsTrue(list[2].FunEventId != list[0].FunEventId);

            //
            // Query - By First Name & Eent
            //
            QueryInputFromClient queryInputFromClient2 = new QueryInputFromClient();

            queryInputFromClient2.FirstName = searchKey;
            queryInputFromClient2.FunEvent  = 101;
            var queryResult2 = await controller.Get(queryInputFromClient2);

            var list2 = queryResult2.ToList();

            Assert.IsTrue(list2.Count() == 1);
            Assert.IsTrue(list2[0].Email == emailBackup);
            Assert.IsTrue(list2[0].FirstName.Contains(searchKey));
            Assert.IsTrue(list2[0].FunEventId == 101);
        }