public async Task <Meeting> SetupMeetingEvent(string title, DateTime start, DateTime end, Meeting meeting, TeamChannel channel, IFormFile[] files, string[] attendees)
        {
            var attachments = new List <DriveItem>();

            var meetingAttendees = new List <MeetingAttendee>();
            var taskFiles        = new List <TaskFile>();

            if (files != null && files.Length > 0)
            {
                var users = new List <User>();

                foreach (var attendee in attendees)
                {
                    var graphUser = await _userService.GetUserByEmail(attendee);

                    users.Add(graphUser);

                    meetingAttendees.Add(new MeetingAttendee
                    {
                        Email     = attendee,
                        Name      = graphUser.UserPrincipalName,
                        MeetingId = meeting.Id
                    });
                }

                foreach (var file in files)
                {
                    using (var fileStram = file.OpenReadStream())
                    {
                        var uploadFile = await _fileService.UploadFile(meeting.TeamId, meeting.FolderId, file.FileName, fileStram);

                        attachments.Add(uploadFile);
                        await _planTaskService.CreatePreReadTaskForEachUser(channel.PlanId, meeting.BucketId, $"[Pre-reading] {file.FileName}", uploadFile, start, users.Select(i => i.Id).ToArray());

                        taskFiles.Add(new TaskFile
                        {
                            Location  = uploadFile.WebUrl,
                            Name      = uploadFile.Name,
                            MeetingId = meeting.Id
                        });
                    }
                }
            }

            var joinUrl = await _communicationService.CreateOnlineMeeting(title, start, (await _userService.Me()).Id);

            var model = new EmailTemplateViewModel()
            {
                Agendas     = meeting.Agendas.Select(a => a.Title),
                Attachments = attachments,
                JoinUrl     = joinUrl
            };

            var emailContent = await _viewRenderService.RenderToStringAsync("Templates/Invitation", model);

            var meetingEvent = await _calendarService.CreateEvent(title,
                                                                  DateTimeTimeZone.FromDateTime(start),
                                                                  DateTimeTimeZone.FromDateTime(end),
                                                                  emailContent,
                                                                  attendees.Select(mail =>
                                                                                   new Attendee
            {
                EmailAddress = new EmailAddress {
                    Address = mail
                },
                Type = AttendeeType.Required
            }),
                                                                  meeting,
                                                                  meeting.BucketId);

            meeting.EventId = meetingEvent.Id;
            await _meetingDBService.UpdateMeeting(meeting, meetingAttendees, taskFiles);

            return(meeting);
        }