public static bool UpdateLeagueFromMobile(LeagueBase leagueToUpdate) { try { var dc = new ManagementContext(); var league = dc.Leagues.Include("ContactCard").Where(x => x.LeagueId == leagueToUpdate.LeagueId).FirstOrDefault(); league.Name = leagueToUpdate.Name; league.WebSite = leagueToUpdate.Website; league.Twitter = leagueToUpdate.Twitter; league.Instagram = leagueToUpdate.Instagram; league.Facebook = leagueToUpdate.Facebook; league.RuleSetsPlayedEnum = (long)leagueToUpdate.RuleSetsPlayedEnum; league.CultureLCID = leagueToUpdate.CultureSelected; if (leagueToUpdate.Founded != null && leagueToUpdate.Founded != new DateTime() && leagueToUpdate.Founded > DateTime.UtcNow.AddYears(-100)) league.Founded = leagueToUpdate.Founded; var emailDb = league.ContactCard.Emails.Where(x => x.IsDefault == true).FirstOrDefault(); if (emailDb != null) { emailDb.EmailAddress = leagueToUpdate.Email; } else { Email em = new Email(); em.ContactCard = league.ContactCard; em.EmailAddress = leagueToUpdate.Email; em.IsDefault = true; league.ContactCard.Emails.Add(em); } //int numberType = Convert.ToInt32(CommunicationTypeEnum.PhoneNumber); var phone = league.ContactCard.Communications.Where(x => x.CommunicationTypeEnum == (byte)CommunicationTypeEnum.PhoneNumber).FirstOrDefault(); if (phone != null) phone.Data = leagueToUpdate.PhoneNumber; else { Communication com = new Communication(); com.Data = leagueToUpdate.PhoneNumber; //com.CommunicationType = dc.CommunicationType.Where(x => x.CommunicationTypeId == numberType).FirstOrDefault(); com.CommunicationTypeEnum = (byte)CommunicationTypeEnum.PhoneNumber; com.ContactCard = league.ContactCard; com.IsDefault = true; league.ContactCard.Communications.Add(com); } var addresses = league.ContactCard.Addresses.Where(x => x.IsDefault == true).FirstOrDefault(); if (addresses == null) if (league.ContactCard.Addresses.Count > 0) addresses = league.ContactCard.Addresses.FirstOrDefault(); if (addresses == null) { addresses = new Address(); addresses.ContactCard = league.ContactCard; } addresses.CityRaw = leagueToUpdate.City; addresses.StateRaw = leagueToUpdate.State; addresses.Zip = leagueToUpdate.ZipCode; var countryDb = dc.Countries.Where(x => x.Name.ToLower() == leagueToUpdate.Country.ToLower()).FirstOrDefault(); if (countryDb == null) countryDb = dc.Countries.Where(x => x.Code.ToLower() == leagueToUpdate.Country.ToLower()).FirstOrDefault(); addresses.Country = countryDb; var coords = OpenStreetMap.FindLatLongOfAddress(addresses.Address1, addresses.Address2, addresses.Zip, addresses.CityRaw, addresses.StateRaw, addresses.Country != null ? addresses.Country.Name : string.Empty); if (coords != null) { addresses.Coords = new System.Device.Location.GeoCoordinate(); addresses.Coords.Latitude = coords.Latitude; addresses.Coords.Longitude = coords.Longitude; addresses.Coords.Altitude = 0; addresses.Coords.Course = 0; addresses.Coords.HorizontalAccuracy = 1; addresses.Coords.Speed = 0; addresses.Coords.VerticalAccuracy = 1; } addresses.IsDefault = true; int c = dc.SaveChanges(); return c > 0; } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return false; }
/// <summary> /// updates the leagues basic information basically coming from a new user registering a new league. /// </summary> /// <param name="leagueId"></param> /// <param name="leagueName"></param> /// <param name="emailOfLeague"></param> /// <param name="phoneNumber"></param> /// <param name="city"></param> /// <param name="country"></param> /// <param name="state"></param> /// <param name="timezone"></param> public static bool UpdateLeagueForOwner(Guid leagueId, string leagueName, string emailOfLeague, string phoneNumber, string city, int country, string state, double timezone) { try { var dc = new ManagementContext(); var league = dc.Leagues.Include("Owners").Include("Teams").Include("Members").Include("ContactCard").Where(x => x.LeagueId == leagueId).FirstOrDefault(); league.Name = leagueName; league.SubscriptionPeriodEnds = DateTime.UtcNow.AddDays(InvoiceSubscription.NUMBER_OF_DAYS_FOR_TRIAL_SUBSCRIPTION); var emailDb = league.ContactCard.Emails.Where(x => x.IsDefault == true).FirstOrDefault(); if (emailDb != null) { emailDb.EmailAddress = emailOfLeague; } else { Email em = new Email(); em.ContactCard = league.ContactCard; em.EmailAddress = emailOfLeague; em.IsDefault = true; } var addresses = league.ContactCard.Addresses.Where(x => x.IsDefault == true).FirstOrDefault(); if (addresses != null) { addresses.CityRaw = city; addresses.StateRaw = state; var countryDb = dc.Countries.Where(x => x.CountryId == country).FirstOrDefault(); addresses.Country = countryDb; addresses.TimeZone = timezone; var coords = OpenStreetMap.FindLatLongOfAddress(addresses.Address1, addresses.Address2, addresses.Zip, addresses.CityRaw, addresses.StateRaw, addresses.Country != null ? addresses.Country.Name : string.Empty); if (coords != null) { addresses.Coords = new System.Device.Location.GeoCoordinate(); addresses.Coords.Latitude = coords.Latitude; addresses.Coords.Longitude = coords.Longitude; addresses.Coords.Altitude = 0; addresses.Coords.Course = 0; addresses.Coords.HorizontalAccuracy = 1; addresses.Coords.Speed = 0; addresses.Coords.VerticalAccuracy = 1; } } else if (league.ContactCard.Addresses.Count > 0) { addresses = league.ContactCard.Addresses.FirstOrDefault(); addresses.CityRaw = city; addresses.StateRaw = state; var countryDb = dc.Countries.Where(x => x.CountryId == country).FirstOrDefault(); addresses.Country = countryDb; addresses.TimeZone = timezone; addresses.IsDefault = true; var coords = OpenStreetMap.FindLatLongOfAddress(addresses.Address1, addresses.Address2, addresses.Zip, addresses.CityRaw, addresses.StateRaw, addresses.Country != null ? addresses.Country.Name : string.Empty); if (coords != null) { addresses.Coords = new System.Device.Location.GeoCoordinate(); addresses.Coords.Latitude = coords.Latitude; addresses.Coords.Longitude = coords.Longitude; addresses.Coords.Altitude = 0; addresses.Coords.Course = 0; addresses.Coords.HorizontalAccuracy = 1; addresses.Coords.Speed = 0; addresses.Coords.VerticalAccuracy = 1; } } else { Address add = new Address(); add.IsDefault = true; add.CityRaw = city; add.StateRaw = state; var countryDb = dc.Countries.Where(x => x.CountryId == country).FirstOrDefault(); add.Country = countryDb; add.TimeZone = timezone; add.IsDefault = true; var coords = OpenStreetMap.FindLatLongOfAddress(addresses.Address1, addresses.Address2, addresses.Zip, addresses.CityRaw, addresses.StateRaw, addresses.Country != null ? addresses.Country.Name : string.Empty); if (coords != null) { add.Coords = new System.Device.Location.GeoCoordinate(); add.Coords.Latitude = coords.Latitude; add.Coords.Longitude = coords.Longitude; add.Coords.Altitude = 0; add.Coords.Course = 0; add.Coords.HorizontalAccuracy = 1; add.Coords.Speed = 0; add.Coords.VerticalAccuracy = 1; } add.ContactCard = league.ContactCard; } var member = RDN.Library.Classes.Account.User.GetMember(); var emailData = new Dictionary<string, string> { { "name", leagueName }, { "leagueId", leagueId.ToString() }, { "email", emailOfLeague }, { "phone", phoneNumber }, { "country", country.ToString() }, { "memberId", member.MemberId.ToString() }, { "memberName", member.DerbyName} }; EmailServer.EmailServer.SendEmail(ServerConfig.DEFAULT_EMAIL, ServerConfig.DEFAULT_EMAIL_FROM_NAME, ServerConfig.DEFAULT_INFO_EMAIL, EmailServer.EmailServer.DEFAULT_SUBJECT + " A league has found its owner", emailData, layout: EmailServer.EmailServerLayoutsEnum.OwnershipTakenOfLeague); dc.SaveChanges(); return true; } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return false; }
/// <summary> /// Verifies that the code and email that was sent to the user matches the database entries. /// </summary> /// <param name="emailVerificationCode"></param> /// <param name="email"></param> /// <returns></returns> public static List<VerifyEmailEnum> VerifyEmailVerification(string emailVerificationCode, string ip) { // Validate that the code and email are correct var output = new List<VerifyEmailEnum>(); try { Guid verificationCode; var isCodeGuid = Guid.TryParse(emailVerificationCode, out verificationCode); if (!isCodeGuid) output.Add(VerifyEmailEnum.Code_Invalid); // Something was wrong, return if (output.Count > 0) return output; // Try to get the post from the database using the specified code and email var dc = new ManagementContext(); var record = dc.EmailVerifications.Include("Member").FirstOrDefault(x => x.VerificationId.Equals(verificationCode)); if (record == null) // No post found, return { output.Add(VerifyEmailEnum.Code_Email_Invalid); return output; } var memberId = record.Member.MemberId; var memberEmail = new RDN.Library.DataModels.ContactCard.Email { ContactCard = record.Member.ContactCard, EmailAddress = record.EmailAddress, IsDefault = true }; // Set all (current) emails default to false. Default means that this is this member primary contact email. var emails = record.Member.ContactCard.Emails.Where(x => x.IsDefault.Equals(true)); foreach (var emailObj in emails) emailObj.IsDefault = false; // Add the new email and also verify the member if the member is unverified record.Member.ContactCard.Emails.Add(memberEmail); record.Member.IsVerified = true; // Remove the verification email dc.EmailVerifications.Remove(record); var result = dc.SaveChanges(); if (result == 0) { output.Add(VerifyEmailEnum.Error_Save); } } catch (Exception exception) { ErrorDatabaseManager.AddException(exception, exception.GetType()); } return output; }