Ejemplo n.º 1
0
        private bool AddAgencyDetails(AgencyRequest agency, S4Identity account)
        {
            var _query  = $@"
                UPDATE agency_account
                SET
                    contact_email = @email,
                    contact_first_name = @first,
                    contact_last_name = @last,
                    s4_id = @s4_id
                WHERE 
                    agency = @agency";
            var _params = new
            {
                agency = agency.agency,
                email  = agency.email,
                first  = agency.first_name,
                last   = agency.last_name,
                s4_id  = account.s4_id,
            };

            using (var conn = new NpgsqlConnection(_conn))
            {
                var result = conn.Execute(_query, _params);
                return(result == 1);
            }
        }
Ejemplo n.º 2
0
        // Agency Registration Process
        public async Task <IdentityResult> ClaimAgencyAsync(AgencyRequest dhsmv)
        {
            if (AlreadyOnboard(dhsmv.agency)) // check that agency has an active account
            {
                // Account is active already send to login
                var           msg   = "This agency has already completed the onboarding process";
                IdentityError error = BuildError(msg);
                return(IdentityResult.Failed(error));
            }


            if (IsInProgress(dhsmv.agency, dhsmv.email)) // check that agency has an active account
            {
                // agency has registered s4sales identity
                // but not clicked the onboarded with stripe button and NOW is attempting to re-register with
                // a different email address
                var           msg   = "This agency has already begun onboarding with a different email";
                IdentityError error = BuildError(msg);
                return(IdentityResult.Failed(error));
            }


            int agencyId = await GetAgencyId(dhsmv.agency);

            S4LookupNormalizer normalizer = new S4LookupNormalizer();
            S4Identity         agency     = new S4Identity(agencyId.ToString())
            {
                email = dhsmv.email,
                normalized_user_name = normalizer.Normalize(agencyId.ToString()),
                normalized_email     = normalizer.Normalize(dhsmv.email)
            };

            IdentityResult creating = await _user_manager.CreateAsync(agency, dhsmv.password);

            if (creating != IdentityResult.Success)
            {
                var           msg   = "Error claiming agency";
                IdentityError error = BuildError(msg);
                return(IdentityResult.Failed(error));
            }

            IList <string> roles = new List <string>(); // add roles to account

            roles.Add("agency");
            foreach (var role in roles) // in case accounts ever need multiple roles
            {
                await _user_manager.AddToRoleAsync(agency, role);
            }

            if (!AddAgencyDetails(dhsmv, agency)) // writes details to agency table
            {
                var           msg   = "Error adding the agency details";
                IdentityError error = BuildError(msg);
                return(IdentityResult.Failed(error));
            }
            return(IdentityResult.Success);
        }