示例#1
0
        public async Task <IRestResponse> CreateMeetingAsync(string zoomUserId, CreateingZoomMeetingDTO model)
        {
            var token = GetJwtToken();

            var zoomMeeting = new CreateZoomMeeting
            {
                Topic     = model.Topic,
                StartTime = model.StartTime,
                Duration  = model.Duration,
                Agenda    = model.Agenda
            };

            zoomMeeting.Settings = model.Settings;

            var requestBody = JsonConvert.SerializeObject(zoomMeeting);

            var client  = new RestClient($"{ZoomSettings.ZOOM_API_ENDPOINT}/users/{zoomUserId}/meetings");
            var request = new RestRequest(Method.POST);

            request.AddHeader("content-type", "application/json");
            request.AddHeader("authorization", $"Bearer {token}");
            request.AddParameter("application/json", requestBody, ParameterType.RequestBody);
            IRestResponse response = await client.ExecuteAsync(request);

            return(response);
        }
示例#2
0
        public async Task <IActionResult> CreateZoomMeeting(CreateingZoomMeetingDTO model)
        {
            model.Settings = new ZoomMeetingSettings
            {
                ParticipantVideo = false,
                //AlternativeHosts = Username
            };
            var response = await _zoomApiService.CreateMeetingAsync(ZoomUserId, model);

            if (response.StatusCode != HttpStatusCode.Created)
            {
                return(BadRequest(response.ErrorMessage));
            }

            var zoomMeetingInfo = JsonConvert.DeserializeObject <ZoomMeetingDTO>(response.Content);
            var zoomMeeting     = _mapper.Map <ZoomMeeting>(zoomMeetingInfo);

            zoomMeeting.CreatedBy = UserId;
            await _zoomMeetingRepository.AddAsync(zoomMeeting);

            return(Ok(zoomMeeting));
        }
示例#3
0
        public async Task <IActionResult> Create([FromForm] EventBindingModel model)
        {
            ZoomMeeting zoomMeeting = null;

            if (model.CreateZoomMeeting)
            {
                var createZoomMeetingModel = new CreateingZoomMeetingDTO
                {
                    Topic     = model.Title,
                    Agenda    = model.Description,
                    Duration  = Constants.DEFAULT_ZOOM_MEETING_DURATION,
                    StartTime = model.EventDate
                };

                createZoomMeetingModel.Settings = new ZoomMeetingSettings
                {
                    ParticipantVideo = false,
                    //AlternativeHosts = Username
                };

                var response = await _zoomApiService.CreateMeetingAsync(ZoomUserId, createZoomMeetingModel);

                if (response.StatusCode != System.Net.HttpStatusCode.Created)
                {
                    return(BadRequest(response.ErrorMessage));
                }

                var zoomMeetingInfo = JsonConvert.DeserializeObject <ZoomMeetingDTO>(response.Content);
                zoomMeeting           = _mapper.Map <ZoomMeeting>(zoomMeetingInfo);
                zoomMeeting.CreatedBy = UserId;
                await _zoomMeetingRepository.AddAsync(zoomMeeting);
            }

            var speakerIds = await _eventValueFieldsService.GetSpeakerIdsAsync(model.Speakers);

            var sponsorIds = await _eventValueFieldsService.GetSponsorIdsAsync(model.Sponsors);

            var entity = _mapper.Map <Event>(model);

            entity.CreatedBy = UserId;

            speakerIds.ForEach(x => entity.EventSpeakers.Add(new EventSpeaker {
                SpeakerId = x
            }));
            sponsorIds.ForEach(x => entity.EventSponsors.Add(new EventSponsor {
                SponsorId = x
            }));

            if (model.SessionId.NullOrEmpty())
            {
                entity.SessionId = Guid.NewGuid().ToString();
            }

            if (model.Files != null && model.Files.Count() > 0)
            {
                entity.EventFolder = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
                var folderPath = Path.Combine(_hostEnvironment.WebRootPath, UploadFolders.UPLOAD_PATH, UploadFolders.EVENTS, entity.EventFolder);
                if (!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                int i = 0;
                foreach (var item in model.Files)
                {
                    var filename = item.FileName.ToUniqueFileName();
                    var savePath = Path.Combine(_hostEnvironment.WebRootPath, UploadFolders.UPLOAD_PATH, UploadFolders.EVENTS, entity.EventFolder, filename);
                    await item.CopyToAsync(new FileStream(savePath, FileMode.Create));

                    entity.EventResources[i].Title       = entity.EventResources[i].Title.NullOrEmpty() ? "" : entity.EventResources[i].Title;
                    entity.EventResources[i].FilePath    = new string[] { UploadFolders.UPLOAD_PATH, UploadFolders.EVENTS, entity.EventFolder, filename }.ToWebFilePath();
                    entity.EventResources[i].PreviewType = filename.Contains(".pdf") ? "pdf" : "image";
                }
            }

            if (zoomMeeting != null)
            {
                entity.MeetingId       = zoomMeeting.Id;
                entity.MeetingPassword = zoomMeeting.Password;
            }

            await _repository.AddAsync(entity);

            return(Ok());
        }