forked from docker/labs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
SignUp.aspx.cs
82 lines (72 loc) · 2.44 KB
/
SignUp.aspx.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using ProductLaunch.Entities;
using ProductLaunch.Messaging;
using ProductLaunch.Messaging.Messages.Events;
using ProductLaunch.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ProductLaunch.Web
{
public partial class SignUp : Page
{
private static Dictionary<string, Country> _Countries;
private static Dictionary<string, Role> _Roles;
public static void PreloadStaticDataCache()
{
_Countries = new Dictionary<string, Country>();
_Roles = new Dictionary<string, Role>();
using (var context = new ProductLaunchContext())
{
foreach (var country in context.Countries.OrderBy(x => x.CountryName))
{
_Countries[country.CountryCode] = country;
}
foreach (var role in context.Roles.OrderBy(x => x.RoleName))
{
_Roles[role.RoleCode] = role;
}
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PopulateRoles();
PopulateCountries();
}
}
private void PopulateRoles()
{
ddlRole.Items.Clear();
ddlRole.Items.AddRange(_Roles.Select(x => new ListItem(x.Value.RoleName, x.Key)).ToArray());
}
private void PopulateCountries()
{
ddlCountry.Items.Clear();
ddlCountry.Items.AddRange(_Countries.Select(x => new ListItem(x.Value.CountryName, x.Key)).ToArray());
}
protected void btnGo_Click(object sender, EventArgs e)
{
var country = _Countries[ddlCountry.SelectedValue];
var role = _Roles[ddlRole.SelectedValue];
var prospect = new Prospect
{
CompanyName = txtCompanyName.Text,
EmailAddress = txtEmail.Text,
FirstName = txtFirstName.Text,
LastName = txtLastName.Text,
Country = country,
Role = role
};
var eventMessage = new ProspectSignedUpEvent
{
Prospect = prospect,
SignedUpAt = DateTime.UtcNow
};
MessageQueue.Publish(eventMessage);
Server.Transfer("ThankYou.aspx");
}
}
}