public async Task <IActionResult> HandleTimetableForClient(AddScheduleToCalendarRequest clientRequest)
        {
            var groupId = HttpContext.Session.GetString("groupId") ?? await _studentGroupsRepository.GetGroupId(clientRequest.GroupName);

            if (string.IsNullOrEmpty(groupId))
            {
                return(Problem("Id for provided group not found."));
            }

            HttpContext.Session.SetString("groupId", groupId);
            var userId     = clientRequest.UserId ?? HttpContext.Session.GetString("userId");
            var authResult = await AuthorizeGoogleUser(userId);

            if (authResult.RedirectUri != null)
            {
                var redirectResult = new CalendarUpdateResult("Authentication required.")
                {
                    AuthorizationEndpoint = authResult.RedirectUri
                };
                return(Ok(redirectResult));
            }

            var schedule        = _scheduleProvider.GetCurrentSchedule(groupId);
            var calendarService = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = authResult.Credential,
                ApplicationName       = _planerConfig.GetApplicationName()
            });
            var result = await _googleCalendar.AddStudentGroupSchedule(calendarService, schedule);

            if (!result.IsSuccess)
            {
                return(Problem(result.ErrorMessage));
            }

            return(Ok(result));
        }