Beispiel #1
0
        // Methods
        public void Register(Registration registration)
        {
            #region Contracts

            if (registration == null || registration.IsValid() == false)
            {
                throw new ArgumentException(nameof(registration));
            }

            #endregion

            // Register
            try
            {
                // Add
                _registrationRepository.Add(registration);

                // Return
                return;
            }
            catch (DuplicateKeyException)
            {
                // Update
                _registrationRepository.Update(registration);

                // Return
                return;
            }
        }
Beispiel #2
0
 public void Post([FromBody] Registration Registration)
 {
     if (ModelState.IsValid)
     {
         RegistrationRepository.Add(Registration);
     }
 }
        public void CanAddRegistration()
        {
            // ARRANGE
            _registration = CreateRegistration();

            // ACT
            var newRegistration = _subjectUnderTest.Add(_registration);

            // ASSERT
            Assert.That(newRegistration.Id, Is.Not.EqualTo(Guid.Empty));
        }
        public void CanAdd()
        {
            SPWeb        web          = this.RecordAddReturnSPWeb();
            SPListItem   item         = this.RecordAddSPListItem();
            Registration registration = new Registration();

            registration.Title              = "UnitTest";
            registration.CourseId           = 1234;
            registration.UserId             = 100;
            registration.RegistrationStatus = "Pending";
            MockListItemRepository.SPListItemReturnedByGet = item;
            serviceLocator.Register <IListItemRepository>(typeof(MockListItemRepository));
            RegistrationRepository repository = new RegistrationRepository();

            int id = repository.Add(registration, web);

            Assert.AreEqual(1, id);
            MockManager.Verify();
        }
Beispiel #5
0
        private static void Main(string[] args)
        {
            var filter = new LogFilter();

            filter.AddNamespace("SipSharp.Transports.*", LogLevel.Debug);
            filter.AddStandardRules();

            LogFactory.Assign(new ConsoleLogFactory(filter));

            var repos = new RegistrationRepository();

            repos.Add(new SipUri("*****@*****.**"), "u1000067");

            SwitchSharp switchSharp = new SwitchSharp();

            switchSharp.RegistrationDatabase = repos;
            switchSharp.AddListener(new UdpTransport(new IPEndPoint(IPAddress.Any, 5060), switchSharp.MessageFactory));
            switchSharp.Start("mydomain.com");


            Thread.Sleep(500000);
        }
Beispiel #6
0
        public Task Execute(params string[] args)
        {
            if (args.Length != 3)
            {
                return(Fail("Invalid arguments\r\n" + Usage));
            }

            var env            = args[0];
            var partition      = args[1];
            var serializedData = args[2];

            Write("Parsing and validating registration object... ");
            var registration = JsonConvert.DeserializeObject <RegistrationEntity>(serializedData);

            WriteLine("done.");
            WriteLine($"Adding registration row to env:{env} with partition key {partition}.");

            var repository = new RegistrationRepository(new EnvironmentClient(env).Options);

            registration.PartitionKey = partition;
            registration.Timestamp    = DateTime.UtcNow;
            registration.ConfirmedAt  = DateTime.UtcNow;
            registration.RowKey       = Guid.NewGuid().ToString();

            if (string.IsNullOrWhiteSpace(registration.Nickname))
            {
                registration.Nickname = $"{registration.Lastname} {registration.Firstname}";
            }

            var result = repository.Add(registration);

            Task.WaitAll(result);

            var statusCode = result.Result.HttpStatusCode;

            return(statusCode == 204 ? Task.FromResult(0) : Fail($"Insert returned HTTP status {statusCode}."));
        }
Beispiel #7
0
        public void Call()
        {
            var vehicles = _vehicleRepository.GetAllWithExpiredRegistration();

            PrintHelpers.PrintVehicles(vehicles);
            Console.WriteLine("Type vehicle id to register");
            var isRead = ReadHelpers.TryReadNumber(out var vehicleId);

            if (!isRead)
            {
                return;
            }

            Console.WriteLine("Enter vehicle registration date");
            var registrationDate = DateTime.ParseExact(Console.ReadLine(), DateConstants.DateFormat, null);

            var result = _registrationRepository.Add(registrationDate, vehicleId);

            if (result == ResponseResultType.ValidationError)
            {
                Console.WriteLine("Registration date cannot be in future");
            }

            if (result == ResponseResultType.NotFound)
            {
                Console.WriteLine("Vehicle not found");
            }

            if (result == ResponseResultType.Success)
            {
                Console.WriteLine("Vehicle registration successfully saved");
            }

            Console.ReadLine();
            Console.Clear();
        }
        public async Task <RegistrationResult> Register(RegistrationCommand cmd)
        {
            void log(string format, params object[] args)
            {
                logger.LogInformation("Register {0} ({1}): {2}", cmd.Id, cmd.Email, string.Format(format, args));
            }

            log("Starting registration sequence");

            // Duplicate detection based on email (used to be on the queue, now do dummily here)
            var all = await repository.All(cmd.Happening);

            if (all.Any(r => r.Email.Equals(cmd.Email, StringComparison.OrdinalIgnoreCase)))
            {
                logger.LogWarning("Register {0} ({1}): Duplicate registration detected", cmd.Id, cmd.Email);
                return(RegistrationResult.Duplicate);
            }

            var registrationEntity = new RegistrationEntity
            {
                PartitionKey = cmd.Happening,
                RowKey       = cmd.Id.ToString(),
                Email        = cmd.Email.ToLower(),
                Mobile       = cmd.Mobile,
                Firstname    = cmd.Firstname,
                Lastname     = cmd.Lastname,
                Nickname     = cmd.Nickname,
                Timestamp    = cmd.Time,
                BeenThere    = cmd.BeenThere,
                IsMember     = cmd.IsMember,
                Info         = cmd.Info
            };

            var result = await repository.Add(registrationEntity);

            if (result.HttpStatusCode >= 300)
            {
                logger.LogError("Register {0} ({1}): Persisting registration to DB failed with status code {2}", cmd.Id, cmd.Email, result.HttpStatusCode);
                return(RegistrationResult.InternalError);
            }

            log("Registration persisted, HTTP Status code is {0}.", result.HttpStatusCode);

            // Send verification email - as this is not part of transaction doing this with queues would be pedant, but all of that was removed to reduce complexity.
            log("Sending verification email");
            logger.LogDebug("Using email API key {0}", options.APIKey);

            var msg = MailHelper.CreateSingleEmail(
                from: new EmailAddress(options.FromAddress, options.FromDisplayName),
                to: new EmailAddress(cmd.Email, cmd.Firstname + " " + cmd.Lastname),
                subject: options.ConfirmationSubject,
                plainTextContent: string.Format(CultureInfo.CurrentCulture, options.ConfirmationTemplate, cmd.EmailValidationUrl),
                htmlContent: null);

            var response = await new SendGridClient(options.APIKey).SendEmailAsync(msg);

            if (response.StatusCode != System.Net.HttpStatusCode.Accepted)
            {
                logger.LogError("Register {0} ({1}): Email sending failed, SendGrid status code was {2}.", cmd.Id, cmd.Email, response.StatusCode);
                return(RegistrationResult.InternalError);
            }

            log("Email sent, SendGrid status code was {0}.", response.StatusCode);
            return(RegistrationResult.OK);
        }
Beispiel #9
0
        public InterfaceResponse UpdateRegistration(RegisterUpdateRequest request, int accountId)
        {
            //this function allows the user to send their new rego details
            //to update their account

            var user = UserRepository.Find(accountId);

            //check user is real
            if (user == null)
            {
                return new InterfaceResponse
                       {
                           Success = false,
                           Message = $"User account {accountId} does not exist"
                       }
            }
            ;

            var record = RegistrationRepository.Find(accountId);


            if (record == null)
            {
                //create a new record if no record exists currently
                var registration = new Registration
                {
                    AccountID           = user.AccountID,
                    AddressLine1        = request.AddressLine1,
                    AddressLine2        = request.AddressLine2,
                    DriversLicenceID    = request.LicenceNumber,
                    DriversLicenceState = request.LicenceState,
                    PhoneNumber         = request.PhoneNumber,
                    Postcode            = request.Postcode,
                    State  = request.State,
                    Suburb = request.Suburb
                };

                RegistrationRepository.Add(registration);
            }
            else
            {
                //if a record exists override existing values
                record.AccountID = user.AccountID;
                user.FirstName   = request.FirstName;
                user.LastName    = request.LastName;
                //user.Email = request.Email;
                record.AddressLine1        = request.AddressLine1;
                record.AddressLine2        = request.AddressLine2;
                record.DriversLicenceID    = request.LicenceNumber;
                record.DriversLicenceState = request.LicenceState;
                record.PhoneNumber         = request.PhoneNumber;
                record.Postcode            = request.Postcode;
                record.State  = request.State;
                record.Suburb = request.Suburb;
                UserRepository.Update(user);
                RegistrationRepository.Update(record);
            }

            return(new InterfaceResponse
            {
                Success = true,
                Message = "Registration record updated"
            });
        }
Beispiel #10
0
        /// <summary>
        ///     Registers a user and their associated registration into the database
        /// </summary>
        /// <param name="request">The fields used to populate the registration</param>
        /// <returns>A response indicating success or failure of the operation</returns>
        public RegisterResponse Register(RegisterRequest request)
        {
            //ensure the user has not been registered already
            if (UserRepository.FindByEmail(request.Email) != null)
            {
                return new RegisterResponse
                       {
                           Success = false,
                           Message = "Unable to register user",
                           Errors  = new[]
                           {
                               "User is already registered"
                           }
                       }
            }
            ;


            //checks if the user is above the acceptable age
            var dob = request.DateOfBirth ?? DateTime.Now; //this is because dob could be null

            if (dob.Date > DateTime.Now)
            {
                return new RegisterResponse
                       {
                           Success = false,
                           Message = "You must enter a date before today's date",
                           Errors  = new[]
                           {
                               "User does not meet the age requirement"
                           }
                       }
            }
            ;


            var minAge = DateTime.Now.AddYears(-Constants.UserMinimumAge); //minage is todays date minus 18 years

            if (dob.Date > minAge.Date)
            {
                return new RegisterResponse
                       {
                           Success = false,
                           Message = "Unable to register user. You must be at least " + Constants.UserMinimumAge +
                                     " to register",
                           Errors = new[]
                           {
                               "User does not meet the age requirement"
                           }
                       }
            }
            ;

            //validaite that the input phone number is within 10 digits
            string phoneNo = request.PhoneNumber.Replace(" ", "");

            if (phoneNo.Length > 10)
            {
                return new RegisterResponse
                       {
                           Success = false,
                           Message = "Phone number must be 10 digits long",
                           Errors  = new[]
                           {
                               "User's phone number is not valid"
                           }
                       }
            }
            ;

            //generate a one time password
            var otpgenerator = new Random();
            var otpRecord    = otpgenerator.Next(100000, 999999).ToString();

            //register the user first
            var user = new User
            {
                FirstName = request.FirstName,
                LastName  = request.LastName,
                Email     = request.Email,
                Password  = Encryption.EncryptString(request.Password),
                OTP       = otpRecord,
                UserGroup = Constants.UserGroupName,
                Status    = Constants.UserOTPStatus
            };


            //Mail.SMTPMailer(request.Email, request.FirstName, otpRecord);
            UserRepository.Add(user);

            //populate the registration table now using the account ID of the registered user
            var registration = new Registration
            {
                AccountID           = user.AccountID,
                AddressLine1        = request.AddressLine1,
                AddressLine2        = request.AddressLine2,
                DateOfBirth         = request.DateOfBirth.Value,
                DriversLicenceID    = request.LicenceNumber,
                DriversLicenceState = request.LicenceState,
                PhoneNumber         = phoneNo,
                Postcode            = request.Postcode,
                State  = request.State,
                Suburb = request.Suburb
            };

            RegistrationRepository.Add(registration);

            var emailTemplate = TemplateRepository.FindAll().FirstOrDefault();

            if (emailTemplate == null)
            {
                return(new RegisterResponse
                {
                    Success = false,
                    Message = "An error has occurred",
                    Errors = new[]
                    {
                        "User account registered but no email sent. No email template defined."
                    }
                });
            }

            //convert the email template to replace the keys within the template
            string subject = EmailKeyReplacer(emailTemplate.Subject, user);
            string title   = EmailKeyReplacer(emailTemplate.Title, user);
            string body    = EmailKeyReplacer(emailTemplate.Body, user);
            string footer  = EmailKeyReplacer(emailTemplate.Footer, user);

            //This will send an email based on the fields passed
            EmailProvider.Send(request.Email, subject, title, body, footer);

            //return successful operation
            return(new RegisterResponse
            {
                Success = true,
                Message =
                    $"User {user.Email} has been created. An email to validate this email address will be sent shortly."
            });
        }