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());
        }
Example #3
0
        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);
        }
Example #4
0
        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();
        }
Example #5
0
        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));
        }