public async Task <ActionResult> ManageEventData(string eventId, string clientTimeZone) { var context = this.Request.GetOwinContext(); var userObjectId = context.Authentication.User.GetUserObjectId(); TZConvert.TryIanaToWindows(clientTimeZone, out string windowsTimeZoneId); var manageEventModel = new ManageEventViewModel() { EventId = eventId, ClientTimeZone = clientTimeZone, TeamDetails = await this.GetTeamDetailsWhereBothBotAndUsersAreInAsync(userObjectId), TimeZoneList = Common.GetTimeZoneList(), SelectedTimeZoneId = windowsTimeZoneId, EventTypesInfo = new List <Tuple <EventTypes, string> > { Tuple.Create(EventTypes.Birthday, Strings.BirthdayEventTypeName), Tuple.Create(EventTypes.Anniversary, Strings.AnniversaryEventTypeName), Tuple.Create(EventTypes.Holiday, Strings.HolidayEventTypeName), Tuple.Create(EventTypes.Other, Strings.OtherEventTypeName), }, }; if (!string.IsNullOrWhiteSpace(eventId)) { manageEventModel.CelebrationEvent = await this.eventDataProvider.GetEventByIdAsync(eventId, userObjectId); manageEventModel.SelectedTimeZoneId = manageEventModel.CelebrationEvent?.TimeZoneId ?? manageEventModel.SelectedTimeZoneId; } return(this.PartialView(manageEventModel)); }
public void Can_Convert_IANA_System_Zones_To_Windows() { Skip.If(RuntimeInformation.IsOSPlatform(OSPlatform.Windows), "OS is Windows."); var errors = 0; IEnumerable <string> ianaZones = TimeZoneInfo.GetSystemTimeZones().Select(x => x.Id); string[] unmappable = { "Antarctica/Troll" }; foreach (string ianaZone in ianaZones.Except(unmappable)) { if (TZConvert.TryIanaToWindows(ianaZone, out string windowsZone)) { Assert.NotNull(windowsZone); Assert.NotEqual(string.Empty, windowsZone); } else { errors++; _output.WriteLine($"Failed to convert \"{ianaZone}\""); } } Assert.Equal(0, errors); }
public NxtpRequestV1(string TimeZoneCode) { bool testMode = (TimeZoneCode ?? "").Trim().ToUpper() == "TEST"; if (testMode) { this.TimeZoneCode = "TEST"; } else { this.TimeZoneCode = TimeZoneCode; } string zone = (TimeZoneCode ?? "").Replace(" ", "").ToLower(); foreach (var tz in TimeZoneInfo.GetSystemTimeZones()) { string id = tz.Id; if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { TZConvert.TryIanaToWindows(tz.Id, out id); } if (testMode && id == "GMT Standard Time") { this.ZoneInfo = tz; break; } else if (zone == id.Replace(" ", "").ToLower()) { this.ZoneInfo = tz; break; } } }
private async void EditButton_OnClicked(object sender, EventArgs e) { if (_viewModel.EditMode) { _viewModel.EditMode = false; FullNameEntry.IsVisible = true; _viewModel.IsBusy = true; // Save changes. UserInfo updatedUserInfo = await UserService.GetUserInfo(await UserService.GetUserEmail()); updatedUserInfo.FirstName = FirstNameEntry.Text; updatedUserInfo.MiddleName = MiddleNameEntry.Text; updatedUserInfo.LastName = LastNameEntry.Text; // updatedUserInfo.UserEmail = UserEmailEntry.Text; Todo: Implement a change email process. TimeZoneInfo timeZoneInfo = (TimeZoneInfo)TimeZonePicker.SelectedItem; string timeZoneName; if (TZConvert.TryIanaToWindows(timeZoneInfo.Id, out timeZoneName)) { updatedUserInfo.Timezone = timeZoneName; } else { updatedUserInfo.Timezone = "Romance Standard Time"; } if (!string.IsNullOrEmpty(_filePath)) { updatedUserInfo.ProfilePicture = await UserService.UploadProfilePicture(_filePath); } UserInfo resultUserInfo = await UserService.UpdateUserInfo(updatedUserInfo); _viewModel.IsBusy = false; EditButton.Text = IconFont.AccountEdit; if (resultUserInfo != null) { await Reload(); } } else { EditButton.Text = IconFont.ContentSave; FullNameEntry.IsVisible = false; _viewModel.EditMode = true; } }
public async Task <ActionResult> ManageEventData(string userObjectId, string eventId, string clientTimeZone) { this.ViewBag.EmptyView = false; string windowsTimeZoneId; TZConvert.TryIanaToWindows(clientTimeZone, out windowsTimeZoneId); ManageEventModel manageEventModel = new ManageEventModel() { TeamDetails = await this.GetTeamDetailsWhereBothBotAndUsersAreInAsync(userObjectId), TimeZoneList = Common.GetTimeZoneList(), SelectedTimeZoneId = windowsTimeZoneId, }; if (!string.IsNullOrWhiteSpace(eventId)) { manageEventModel.CelebrationEvent = await this.eventHelper.GetEventByEventIdAsync(eventId, userObjectId); } return(this.PartialView("ManageEvents", manageEventModel)); }
public void Can_Convert_Iana_Zones_To_Windows_Zones() { var errors = 0; ICollection <string> ianaZones = TZConvert.KnownIanaTimeZoneNames; string[] unmappable = { "Antarctica/Troll" }; foreach (string ianaZone in ianaZones.Except(unmappable)) { if (TZConvert.TryIanaToWindows(ianaZone, out string windowsZone)) { Assert.NotNull(windowsZone); Assert.NotEqual(string.Empty, windowsZone); } else { errors++; _output.WriteLine($"Failed to convert \"{ianaZone}\""); } } Assert.Equal(0, errors); }
/// <summary> /// Gets the localized names for a given IANA or Windows time zone identifier. /// </summary> /// <param name="timeZoneId">An IANA or Windows time zone identifier.</param> /// <param name="languageCode">The IETF language tag (culture code) to use when localizing the display names.</param> /// <returns>A display name associated with this time zone.</returns> public static string GetDisplayNameForTimeZone(string timeZoneId, string languageCode) { string langKey = GetLanguageKey(languageCode, true); if (langKey == null) { throw new ArgumentException("Invalid Language Code", nameof(languageCode)); } Dictionary <string, string> displayNames = Data.DisplayNames[langKey]; if (displayNames.TryGetValue(timeZoneId, out string displayName)) { return(displayName); } if (TZConvert.TryIanaToWindows(timeZoneId, out timeZoneId) && displayNames.TryGetValue(timeZoneId, out displayName)) { return(displayName); } return(null); }
private async void EditButton_OnClicked(object sender, EventArgs e) { if (_myChildrenViewModel.EditMode) { _myChildrenViewModel.EditMode = false; _myChildrenViewModel.IsBusy = true; // Save changes. Progeny updatedProgeny = new Progeny(); updatedProgeny.Id = _myChildrenViewModel.Progeny.Id; updatedProgeny.Name = NameEntry.Text; updatedProgeny.NickName = DisplayNameEntry.Text; TimeZoneInfo timeZoneInfo = (TimeZoneInfo)TimeZonePicker.SelectedItem; string timeZoneName; if (TZConvert.TryIanaToWindows(timeZoneInfo.Id, out timeZoneName)) { updatedProgeny.TimeZone = timeZoneName; } else { updatedProgeny.TimeZone = "Romance Standard Time"; } if (!string.IsNullOrEmpty(_filePath)) { updatedProgeny.PictureLink = await ProgenyService.UploadProgenyPicture(_filePath); } string[] admins = AdministratorsEntry.Text.Split(','); bool validAdminEmails = true; foreach (string str in admins) { if (!str.Trim().IsValidEmail()) { validAdminEmails = false; } } if (validAdminEmails) { updatedProgeny.Admins = AdministratorsEntry.Text; } DateTime newBirthDay = new DateTime(BirthdayDatePicker.Date.Year, BirthdayDatePicker.Date.Month, BirthdayDatePicker.Date.Day, BirthdayTimePicker.Time.Hours, BirthdayTimePicker.Time.Minutes, 0); updatedProgeny.BirthDay = newBirthDay; Progeny resultProgeny = await ProgenyService.UpdateProgeny(updatedProgeny); _myChildrenViewModel.IsBusy = false; EditButton.Text = IconFont.AccountEdit; if (resultProgeny != null) { MessageLabel.Text = "Profile saved."; MessageLabel.IsVisible = true; await Reload(); } } else { EditButton.Text = IconFont.ContentSave; _myChildrenViewModel.EditMode = true; } }
public virtual INxtpRequest Deserialize(Client Client, byte[] Data, int DataSize) { INxtpRequest rv = null; // Explicitly check for test mode bool testMode = false; if (Data != null && Data.Length >= 4 && DataSize == 4) { var text = (Encoding.ASCII.GetString(Data, 0, 4) ?? "").Trim().ToUpper(); testMode = text == "TEST"; } // Test mode always validates if (testMode) { foreach (var tz in TimeZoneInfo.GetSystemTimeZones()) { string id = tz.Id; if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { TZConvert.TryIanaToWindows(tz.Id, out id); } if (id == "GMT Standard Time") { this.TimeZoneCode = id.Replace(" ", ""); this.ZoneInfo = tz; return(this); } } } // Must be at least one byte for version if (Data == null || Data.Length <= 0 || Data.Length < DataSize || Data[0] != Version) { return(rv); } // Must be at least three bytes excluding payload if (Data.Length < 3) { return(rv); } // Must be three bytes longer than payload int payloadLength = Data[1]; int dataLength = payloadLength + 3; if (DataSize < dataLength) { return(rv); } // Checksum for all bytes except last must match last byte byte cs = ChecksumSeed; for (int i = 0; i < dataLength - 1; i++) { cs ^= Data[i]; } if (Data[dataLength - 1] != cs) { return(rv); } // Get timezone and see if it is in the current server list string zone = (Encoding.ASCII.GetString(Data, 2, payloadLength) ?? "").Replace(" ", "").Trim().ToLower(); zone = TimezoneList.ResolveAlias(zone); if (string.IsNullOrWhiteSpace(zone)) { return(rv); } TimeZoneInfo zoneMatched = null; var zones = TimeZoneInfo.GetSystemTimeZones(); if (zone == "phoebustime") { var rnd = new Random(); int i = rnd.Next(0, zones.Count); this.TimeZoneCode = zone; this.ZoneInfo = zones[i]; return(this); } foreach (var tz in zones) { string id = tz.Id; if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { TZConvert.TryIanaToWindows(tz.Id, out id); } if (zone == id.Replace(" ", "").ToLower()) { zoneMatched = tz; break; } } if (zoneMatched == null) { return(rv); } // Passed validation, set timezone this.Client = Client; this.TimeZoneCode = zone; this.ZoneInfo = zoneMatched; return(this); }
private async void SaveChildButton_OnClicked(object sender, EventArgs e) { if (string.IsNullOrEmpty(NameEntry.Text) || string.IsNullOrEmpty(DisplayNameEntry.Text)) { return; } _addChildViewModel.IsBusy = true; _addChildViewModel.IsSaving = true; Progeny progeny = new Progeny(); if (!string.IsNullOrEmpty(_filePath)) { progeny.PictureLink = await ProgenyService.UploadProgenyPicture(_filePath); } progeny.Name = NameEntry.Text; progeny.NickName = DisplayNameEntry.Text; progeny.BirthDay = new DateTime(BirthdayDatePicker.Date.Year, BirthdayDatePicker.Date.Month, BirthdayDatePicker.Date.Day, BirthdayTimePicker.Time.Hours, BirthdayTimePicker.Time.Minutes, 00); TimeZoneInfo timeZoneInfo = (TimeZoneInfo)TimeZonePicker.SelectedItem; string timeZoneName; if (TZConvert.TryIanaToWindows(timeZoneInfo.Id, out timeZoneName)) { progeny.TimeZone = timeZoneName; } else { progeny.TimeZone = "Romance Standard Time"; } string userEmail = await UserService.GetUserEmail(); progeny.Admins = userEmail; Progeny newProgeny = await ProgenyService.AddProgeny(progeny); _addChildViewModel.IsSaving = false; _addChildViewModel.IsBusy = false; MessageLabel.IsVisible = true; if (newProgeny.Id == 0) { var ci = CrossMultilingual.Current.CurrentCultureInfo; MessageLabel.Text = resmgr.Value.GetString("ErrorChildNotSaved", ci); MessageLabel.BackgroundColor = Color.Red; SaveChildButton.IsEnabled = true; CancelChildButton.IsEnabled = true; } else { var ci = CrossMultilingual.Current.CurrentCultureInfo; MessageLabel.Text = resmgr.Value.GetString("ChildSaved", ci) + newProgeny.Id; MessageLabel.BackgroundColor = Color.Green; SaveChildButton.IsVisible = false; CancelChildButton.Text = "Ok"; CancelChildButton.BackgroundColor = Color.FromHex("#4caf50"); CancelChildButton.IsEnabled = true; // Update the progeny list. await ProgenyService.GetProgenyList(userEmail); await Shell.Current.Navigation.PopModalAsync(); } }