public string ToMessageString(TimeZoneInfoIana userTimeZone) { var sb = new StringBuilder(); sb.AppendLine($"<b>{Name}</b>"); if (IsAllDay) { sb.AppendLine($"Start: {StartDate.Value.ToString("d")}"); sb.AppendLine($"End: {EndDate.Value.ToString("d")}"); } else { sb.AppendLine($"Start: {userTimeZone.ConvertFromUtc(StartDate.Value.AddMinutes(StartTime?.TotalMinutes ?? 0)).ToString("g")}"); sb.AppendLine($"End: {userTimeZone.ConvertFromUtc(EndDate.Value.AddMinutes(EndTime?.TotalMinutes ?? 0)).ToString("g")}"); } if (!string.IsNullOrEmpty(Location?.Description)) { sb.AppendLine($"Location: {Location.Description}"); } sb.AppendLine(); return(sb.ToString()); }
public async Task <IActionResult> SaveTimeZone([FromBody] string timeZone) { if (!TimeZoneInfoIana.IsValidTimeZoneName(timeZone)) { return(this.BadRequestError("Time Zone name must be IANA TimeZone ID.")); } await _settingsService.SetTimeZoneAsync(User.GetUserId(), new TimeZoneInfoIana(timeZone)); return(Ok()); }
public override bool IsValid(object value) { if (string.IsNullOrEmpty(ErrorMessage)) { ErrorMessage = "Time Zone name must be IANA TimeZone ID."; } if (value is string str) { return(TimeZoneInfoIana.IsValidTimeZoneName(str)); } return(false); }
public async Task SetTimeZoneAsync(int userId, TimeZoneInfoIana timeZone) { var user = await _userRepository.FindByIdAsync(userId); if (user == null) { throw new NotFoundException(); } user.TimeZone = timeZone.ToString(); await _userRepository.UpdateAsync(user); await _userRepository.SaveAsync(); }
private async Task <IActionResult> _ReturnEventsByDate(IEnumerable <Event> events, TimeZoneInfoIana timeZone) { if (!events.Any()) { return(await _SendMessageResponse("No events")); } var viewModels = _mapper.Map <IEnumerable <EventViewModel> >(events); var message = string.Join(string.Empty, viewModels.Select(e => e.ToMessageString(timeZone))); return(await _SendMessageResponse(message)); }