public void AddPartyTweet_NewCorrectPartyTweet_ShouldAddInDatabase() { IUnitOfWork unitOfWork = new MockUnitOfWork(); PartyTweetsController partyTweetsController = new PartyTweetsController(); Guest guest = new Guest { EmailAddress = "*****@*****.**" }; Party party = new Party { Guests = new List <Guest> { guest }, EndTime = DateTime.Now, StartTime = DateTime.Now }; PartyGuest partyGuest = new PartyGuest { Guest = guest, Party = party }; PartyTweet partyTweet = new PartyTweet { Message = "TestMessage", PartyGuest = partyGuest }; unitOfWork.Parties.Insert(party); unitOfWork.Guests.Insert(guest); unitOfWork.PartyGuests.Insert(partyGuest); bool ok = partyTweetsController.AddPartyTweet(unitOfWork, partyTweet); Assert.IsTrue(ok); var partyTweets = unitOfWork.PartyTweets.Get(); Assert.IsTrue(partyTweets.Any(pt => pt.Message == partyTweet.Message && pt.PartyGuest == partyGuest)); }
public void AddTrack_UnitOfWorkNull_ShouldThrowException() { TracksController tracksController = new TracksController(); Guest guest = new Guest { EmailAddress = "*****@*****.**" }; Party party = new Party { Guests = new List <Guest> { guest }, EndTime = DateTime.Now, StartTime = DateTime.Now, PlayList = new PlayList() }; PartyGuest partyGuest = new PartyGuest { Party = party, Guest = guest, PartyCode = 1 }; PlayList playList = new PlayList { Party = party }; Track track = new Track { Title = "Song1", Interpret = "Interpret", PlayLists = new List <PlayList> { playList }, RecommendedByGuest = partyGuest }; tracksController.AddTrack(null, track); }
public ActionResult HandleRegisterGuestForm(RegisterGuestForm registerGuestForm) { if (!this.ModelState.IsValid) { return(this.CurrentUmbracoPage()); } // no helper method on this.Members to register a user with a given memberType, so calling provider directly UmbracoMembershipProviderBase membersUmbracoMembershipProvider = (UmbracoMembershipProviderBase)Membership.Providers[Constants.Conventions.Member.UmbracoMemberProviderName]; MembershipCreateStatus membershipCreateStatus; MembershipUser membershipUser = membersUmbracoMembershipProvider.CreateUser( PartyGuest.Alias, // member type alias registerGuestForm.EmailAddress, // username registerGuestForm.Password, // password registerGuestForm.EmailAddress, // email null, // forgotten password question null, // forgotten password answer true, // is approved null, // provider user key out membershipCreateStatus); if (membershipCreateStatus != MembershipCreateStatus.Success) { switch (membershipCreateStatus) { case MembershipCreateStatus.DuplicateEmail: case MembershipCreateStatus.DuplicateUserName: this.ModelState.AddModelError("RegisterGuestValidation", "Email already registered"); break; } return(this.CurrentUmbracoPage()); } // cast from MembershipUser rather than use this.Members.GetCurrentMember() helper (which needs a round trip for the login) PartyGuest partyGuest = (PartyGuest)membershipUser; partyGuest.FacebookRegistration = false; // update database with member and party guid (duplicated data, but never changes) this.DatabaseContext.Database.Insert(new MemberPartyRow(partyGuest.Id, registerGuestForm.PartyGuid)); // (duplicate data) store party guid in cms cache partyGuest.PartyGuid = registerGuestForm.PartyGuid; // add member to DotMailer DotMailerService.GuestRegistrationStarted((Contact)partyGuest); // send cookie FormsAuthentication.SetAuthCookie(partyGuest.Username, true); //return this.NavigateToRegisterGuestUrl(registerGuestForm.PartyGuid); return(this.Redirect(this.Umbraco.TypedContentSingleAtXPath("//" + RegisterGuest.Alias).Url + "?partyGuid=" + registerGuestForm.PartyGuid.ToString())); }
public MainWindowViewModel(IWindowController windowController, PartyGuest guest) : base(windowController) { if (guest != null) { GuestController guestController = new GuestController(); GuestViewModel viewModel = new GuestViewModel(guestController, partyGuest: guest); guestController.ShowWindow(viewModel); } }
private void LoadData(PartyGuest partyGuest) { using (IUnitOfWork unitOfWork = new UnitOfWork()) { LoggedPartyGuest = unitOfWork.PartyGuests.Get(includeProperties: "Guest,PartyTweets") .SingleOrDefault(pg => pg.Id == partyGuest.Id); } LoadPlayListWithTracks(); LoadPartyTweets(); LoadAllTracks(); }
public GuestViewModel(IWindowController windowController, PartyGuest partyGuest) : base(windowController) { PartyPlayList = new PlayList(); SelectedVoteTrack = new ListTrack(); TracksOfPartyPlayList = new List <ListTrack>(); PartyTweets = new List <PartyTweet>(); _selectedRecommendedTrack = new Track(); TextPartyTweet = ""; LoadCommands(); LoadData(partyGuest); }
static void Main(string[] args) { PartyServer server = new PartyServer(""); string[] strs = Directory.GetFiles(@"..\..\TestFiles\"); string sng = strs[(new Random()).Next(0, strs.Length)]; Console.WriteLine(sng); PartyHost host = new PartyHost(sng, server); PartyGuest guest = new PartyGuest(server); Console.Write("Press [Enter] to exit..."); Console.Read(); }
public ActionResult RenderRegisterGuestBillingForm() { RegisterGuestBillingForm registerGuestBillingForm = new RegisterGuestBillingForm(); // set hidden field with party guid registerGuestBillingForm.PartyGuid = ((RegisterGuest)this.CurrentPage).PartyHost.PartyGuid; // set the default amount to the party host's suggested donation registerGuestBillingForm.Amount = this.Members.GetPartyHost(registerGuestBillingForm.PartyGuid).SuggestedDonation; PartyGuest partyGuest = (PartyGuest)this.Members.GetCurrentMember(); registerGuestBillingForm.FirstName = partyGuest.FirstName; registerGuestBillingForm.LastName = partyGuest.LastName; return(this.PartialView("RegisterGuest/Forms/RegisterGuestBillingForm", registerGuestBillingForm)); }
public void AddTrack_NewCorrectTrack_ShouldAddInDatabase() { IUnitOfWork unitOfWork = new MockUnitOfWork(); TracksController tracksController = new TracksController(); Guest guest = new Guest { EmailAddress = "*****@*****.**" }; Party party = new Party { Guests = new List <Guest> { guest }, EndTime = DateTime.Now, StartTime = DateTime.Now, PlayList = new PlayList() }; PartyGuest partyGuest = new PartyGuest { Party = party, Guest = guest, PartyCode = 1 }; PlayList playList = new PlayList { Party = party }; Track track = new Track { Title = "Song1", Interpret = "Interpret", PlayLists = new List <PlayList> { playList }, RecommendedByGuest = partyGuest }; unitOfWork.Parties.Insert(party); unitOfWork.PlayLists.Insert(playList); unitOfWork.PartyGuests.Insert(partyGuest); bool ok = tracksController.AddTrack(unitOfWork, track); Assert.IsTrue(ok); var tracks = unitOfWork.Tracks.Get(); Assert.IsTrue(tracks.Any(t => t.Title == track.Title && t.Interpret == track.Interpret && t.Url == track.Url && t.PlayLists.Equals(track.PlayLists) && t.RecommendedByGuest == track.RecommendedByGuest)); }
public void AddPartyTweet_UnitOfWorkNull_ShouldThrowException() { PartyTweetsController partyTweetsController = new PartyTweetsController(); Guest guest = new Guest { EmailAddress = "*****@*****.**" }; Party party = new Party { Guests = new List <Guest> { guest }, EndTime = DateTime.Now, StartTime = DateTime.Now }; PartyGuest partyGuest = new PartyGuest { Guest = guest, Party = party }; PartyTweet partyTweet = new PartyTweet { Message = "TestMessage", PartyGuest = partyGuest }; partyTweetsController.AddPartyTweet(null, partyTweet); }
public static void Seed(CrowdDj.DAL.ApplicationDbContext context) { Administrator[] administrators = new Administrator[5]; Party[] parties = new Party[5]; Guest[] guests = new Guest[50]; Track[] tracks = new Track[50]; PlayList[] playLists = new PlayList[1]; PartyTweet[] partyTweets = new PartyTweet[30]; Vote[] votes = new Vote[5]; //for (int i = 0; i < administrators.Length; i++) //{ // administrators[i] = new Administrator { UserName = $"Admin{i+1}", Password = $"passme{(i+1) * 11}" }; // context.Administrators.Add(administrators[i]); //} //context.SaveChanges(); for (int i = 0; i < guests.Length; i++) { string mail = $"user{i}@dummy.com"; var guest = new Guest { EmailAddress = mail }; context.Guests.Add(guest); guests[i] = guest; } var partyGuests = new List <PartyGuest>(); int partyCode = 1; for (int i = 0; i < parties.Length; i++) { parties[i] = new Party { EndTime = DateTime.Now.AddDays(-1), Location = "Dahoam", Name = $"Party_{i}", StartTime = DateTime.Now.AddDays(-2) }; var selectionDigit = i.ToString(); var pGuests = guests.Where(g => g.EmailAddress.Contains(selectionDigit)).ToList(); foreach (var guest in pGuests) { var partyGuest = new PartyGuest { PartyCode = partyCode, Guest = guest, Party = parties[i] }; partyGuests.Add(partyGuest); partyCode++; } context.Parties.Add(parties[i]); } context.PartyGuests.AddRange(partyGuests); for (int i = 0; i < partyTweets.Length; i++) { partyTweets[i] = new PartyTweet { Message = "Hallo! Die Party ist ein Hit!" };; partyTweets[i].PartyGuest = partyGuests.ElementAt(i); context.PartyTweets.Add(partyTweets[i]); } for (int i = 0; i < tracks.Length; i++) { tracks[i] = new Track { Interpret = $"Interpret{i + 10}", Title = $"Song{i}", Url = "www.mysongs.ate" }; } playLists[0] = new PlayList { Tracks = tracks, Party = parties[0] }; context.PlayLists.Add(playLists[0]); for (int i = 0; i < votes.Length; i++) { votes[i] = new Vote { Track = tracks[i * 2], Guest = guests[i], PlayList = playLists[0], TimeStamp = DateTime.Now.AddDays(-2).ToLocalTime() }; context.Votes.Add(votes[i]); } int count = context.SaveChanges(); }
public ActionResult HandleRegisterGuestBillingForm(RegisterGuestBillingForm registerGuestBillingForm) { if (!this.ModelState.IsValid) { return(this.CurrentUmbracoPage()); } PartyGuest partyGuest = (PartyGuest)this.Members.GetCurrentMember(); if (partyGuest.FirstName != registerGuestBillingForm.FirstName) { partyGuest.FirstName = registerGuestBillingForm.FirstName; } if (partyGuest.LastName != registerGuestBillingForm.LastName) { partyGuest.LastName = registerGuestBillingForm.LastName; } Address address = new Address( registerGuestBillingForm.Address1, registerGuestBillingForm.Address2, registerGuestBillingForm.TownCity, registerGuestBillingForm.Postcode); partyGuest.BillingAddress = address; if (!string.IsNullOrWhiteSpace(registerGuestBillingForm.Message)) { // post message to party wall this.DatabaseContext.Database.Insert(new MessageRow() { MemberId = this.Members.GetCurrentMemberId(), Text = registerGuestBillingForm.Message, Image = null }); } if (registerGuestBillingForm.Amount == 0) { // update dot mailer to indicate guest has fully registered DotMailerService.GuestRegistrationCompleted((Contact)partyGuest); return(this.Redirect(partyGuest.PartyUrl)); } DonationRow donationRow = new DonationRow() { PartyGuid = registerGuestBillingForm.PartyGuid, Amount = registerGuestBillingForm.Amount, GiftAid = registerGuestBillingForm.AllowGiftAid, MemberId = this.Members.GetCurrentMemberId(), FirstName = registerGuestBillingForm.FirstName, LastName = registerGuestBillingForm.LastName, Address1 = registerGuestBillingForm.Address1, Address2 = registerGuestBillingForm.Address2, TownCity = registerGuestBillingForm.TownCity, Postcode = registerGuestBillingForm.Postcode, PaymentJourney = PaymentJourney.RegisterGuest, Success = false }; // insert new record this.DatabaseContext.Database.Insert(donationRow); // build new obj containing data for sage pay TransactionRegistrationRequest transactionRegistrationRequest = new TransactionRegistrationRequest(donationRow); // send to sage pay and get respone TransactionRegistrationResponse transactionRegistrationResponse = TransactionRegistration.Send(transactionRegistrationRequest); // based on response, we redirect the user to... if (transactionRegistrationResponse.Status == TransactionRegistrationStatus.OK) { // update database donationRow.VPSTxId = transactionRegistrationResponse.VPSTxId; donationRow.SecurityKey = transactionRegistrationResponse.SecurityKey; this.DatabaseContext.Database.Update(donationRow); return(this.Redirect(transactionRegistrationResponse.NextURL)); } this.ViewData["errorMessage"] = transactionRegistrationResponse.StatusDetail; return(this.View("RegisterGuest/Failed", this.CurrentPage)); }
public override ActionResult Index(RenderModel renderModel) { RegisterGuest model = (RegisterGuest)renderModel.Content; // if VendorTxCode can be found on the querystring, then get party guid from transaction table Guid vendorTxCode; if (Guid.TryParse(this.Request.QueryString["VendorTxCode"], out vendorTxCode)) { DonationRow donationRow = this.DatabaseContext.Database.Fetch <DonationRow>("SELECT TOP 1 * FROM wonderlandDonation WHERE VendorTxCode = @0", vendorTxCode).SingleOrDefault(); if (donationRow != null) { model.PartyHost = this.Members.GetPartyHost(donationRow.PartyGuid); model.DonationRow = donationRow; if (donationRow.Success) { return(this.View("RegisterGuest/Complete", model)); } else if (donationRow.Cancelled) { return(this.View("RegisterGuest/Cancelled", model)); } else { return(this.View("RegisterGuest/Failed", model)); } } else { return(this.View("RegisterGuest/UnknownTransaction", model)); } } Guid partyGuid; if (Guid.TryParse(this.Request.QueryString["partyGuid"], out partyGuid)) { model.PartyHost = this.Members.GetPartyHost(partyGuid); if (model.PartyHost != null) { if (this.Members.IsLoggedInPartier()) { if (this.Members.GetCurrentMember() is PartyGuest) { PartyGuest partyGuest = (PartyGuest)this.Members.GetCurrentMember(); return(this.View("RegisterGuest/RegisterGuestBilling", model)); } else { return(this.Redirect(Home.GetCurrentHome(model).Url)); } } return(View("RegisterGuest/RegisterGuest", model)); } } // fallback return(this.Redirect(Home.GetCurrentHome(model).Url)); }
public FormResponse RegisterGuest([FromUri] Guid partyGuid, [FromBody] FacebookCredentials facebookCredentials) { FormResponse formResponse = new FormResponse(); FacebookDetails facebookDetails = this.GetFacebookDetails(facebookCredentials); // no helper method on this.Members to register a user with a given memberType, so calling provider directly UmbracoMembershipProviderBase membersUmbracoMembershipProvider = (UmbracoMembershipProviderBase)Membership.Providers[Constants.Conventions.Member.UmbracoMemberProviderName]; MembershipCreateStatus membershipCreateStatus; MembershipUser membershipUser = membersUmbracoMembershipProvider.CreateUser( PartyGuest.Alias, // member type alias facebookDetails.EmailAddress, // username this.GetPassword(facebookDetails), // password facebookDetails.EmailAddress, // email null, // forgotten password question null, // forgotten password answer true, // is approved null, // provider user key out membershipCreateStatus); if (membershipCreateStatus != MembershipCreateStatus.Success) { switch (membershipCreateStatus) { case MembershipCreateStatus.DuplicateEmail: case MembershipCreateStatus.DuplicateUserName: this.ModelState.AddModelError("RegisterGuestValidation", "Email already registered"); formResponse.Errors = this.ModelState.GetErrors(); break; } return(formResponse); } // cast from MembershipUser rather than use this.Members.GetCurrentMember() helper (which needs a round trip for the login) PartyGuest partyGuest = (PartyGuest)membershipUser; partyGuest.FacebookRegistration = true; partyGuest.FirstName = facebookDetails.FirstName; partyGuest.LastName = facebookDetails.LastName; // update database with member and party guid (duplicated data, but never changes) this.DatabaseContext.Database.Insert(new MemberPartyRow(partyGuest.Id, partyGuid)); // (duplicate data) store party guid in cms cache partyGuest.PartyGuid = partyGuid; // add member to DotMailer DotMailerService.GuestRegistrationStarted((Contact)partyGuest); // send cookie FormsAuthentication.SetAuthCookie(partyGuest.Username, true); formResponse.Success = true; formResponse.Message = this.Umbraco.TypedContentSingleAtXPath("//" + Wonderland.Logic.Models.Content.RegisterGuest.Alias).Url; return(formResponse); }
private void ExportRegistrationsButton_Click(object sender, EventArgs e) { StringBuilder stringBuilder = new StringBuilder(); // headings stringBuilder.AppendLine("Member Id, Member Type, Email, First Name, Last Name, Heard About Us, Registration Date, Address 1, Address 2, Town, Postcode, T-Shirt Size, Party Guid, Party Title, Party DateTime, Party Address 1, Party Address 2, Party Town, Party Postcode, Join Wonderland Story, Party Background Image, Profile Photo, Fundraising Target, Suggested Donation, Guest Count, Amount Raised, Party Blocked, DotMailer Id, DotMailer Registration Complete, DotMailer Party Page Copmlete"); foreach (IPartier partier in this.Members.GetAllPartiers()) { if (partier is PartyHost) { PartyHost partyHost = (PartyHost)partier; stringBuilder.AppendLine( string.Join( ", ", new object[] { partier.Id, // 1. Member Id PartyHost.Alias, // 2. Member Type partier.Email.Replace(',', ' '), // 3. Email partier.FirstName.Replace(',', ' '), // 4. First Name partier.LastName.Replace(',', ' '), // 5. Last Name partyHost.MarketingSource != null ? partyHost.MarketingSource.Replace(',', ' ') : string.Empty, // 6. Heard About Us partyHost.CreateDate, // 7. Registration Date partier.BillingAddress.Address1.Replace(',', ' '), // 8. Billing Address 1 partier.BillingAddress.Address2.Replace(',', ' '), // 9. Billing Address 2 partier.BillingAddress.TownCity.Replace(',', ' '), // 10. Billing TownCity partier.BillingAddress.Postcode.Replace(',', ' '), // 11. Billing Postcode partyHost.TShirtSize, // 12. T-Shirt Size partier.PartyGuid, // 13. Party Guid partyHost.PartyHeading != null ? partyHost.PartyHeading.Replace(',', ' ') : string.Empty, // 14. Party Title partyHost.PartyDateTime, // 15. Party DateTime partyHost.PartyAddress.Address1.Replace(',', ' '), // 16. Party Address 1 partyHost.PartyAddress.Address2.Replace(',', ' '), // 17. Party Address 2 partyHost.PartyAddress.TownCity.Replace(',', ' '), // 18. Party TownCity partyHost.PartyAddress.Postcode.Replace(',', ' '), // 19. Party Postcode partyHost.PartyCopy != null ? partyHost.PartyCopy.Replace(',', ' ') : string.Empty, // 20. Join Wonderland Story partyHost.PartyImage != null ? "Y" : "N", // 21. Party Background Image partier.ProfileImage != null ? "Y" : "N", // 22. Profile Photo partyHost.FundraisingTarget, // 23. Fundraising Target partyHost.SuggestedDonation, // 24. Suggested Donation this.Members.GetPartiers(partyHost.PartyGuid).Count(), // 25. Guest Count partyHost.AmountRaised, // 26. Amount Raised partyHost.Blocked ? "Y" : "N", // 27. Party Blocked partier.DotMailerId, // 28. DotMailer Id partier.DotMailerRegistrationComplete ? "Y" : "N", // 29. DotMailer Registration Complete partyHost.DotMailerPartyPageComplete ? "Y" : "N" // 30. DotMailer Party Page Complete } ) ); } else // must be a guest { PartyGuest partyGuest = (PartyGuest)partier; stringBuilder.AppendLine( string.Join( ", ", new object[] { partier.Id, // 1. Member Id PartyGuest.Alias, // 2. Member Type partier.Email.Replace(',', ' '), // 3. Email partier.FirstName.Replace(',', ' '), // 4. First Name partier.LastName.Replace(',', ' '), // 5. Last Name string.Empty, // 6. Heard About Us partyGuest.CreateDate, // 7. Registration Date partier.BillingAddress.Address1.Replace(',', ' '), // 8. Billing Address 1 partier.BillingAddress.Address2.Replace(',', ' '), // 9. Billing Address 2 partier.BillingAddress.TownCity.Replace(',', ' '), // 10. Billing TownCity partier.BillingAddress.Postcode.Replace(',', ' '), // 11. Billing Postcode string.Empty, // 12. T-Shirt Size partier.PartyGuid, // 13. Party Guid string.Empty, // 14. Party Title string.Empty, // 15. Party DateTime string.Empty, // 16. Party Address 1 string.Empty, // 17. Party Address 2 string.Empty, // 18. Party TownCity string.Empty, // 19. Party Postcode string.Empty, // 20. Join Wonderland Story string.Empty, // 21. Party Background Image partier.ProfileImage != null ? "Y" : "N", // 22. Profile Photo string.Empty, // 23. Fundraising Target string.Empty, // 24. Suggested Donation string.Empty, // 25. Guest Count string.Empty, // 26. Amount Raised string.Empty, // 27. Party Blocked partier.DotMailerId, // 28. DotMailer Id partier.DotMailerRegistrationComplete ? "Y" : "N", // 29. DotMailer Registration Complete string.Empty // 30. DotMailer Party Page Complete } ) ); } } // steream out the response this.Response.Clear(); this.Response.AddHeader("content-disposition", "attachment; filename=registrations.csv"); this.Response.ContentType = "text/csv"; this.Response.ContentEncoding = Encoding.UTF8; this.Response.Write(stringBuilder.ToString()); this.Response.End(); }