Example #1
0
        public async Task Next(int meetingId)
        {
            var response = _controller.Next(meetingId);

            if (response.IsFinished)
            {
                _controller.RemoveManager(meetingId);
                await _meetingService.EndMeeting(meetingId);

                await Clients.Group(meetingId.ToString()).SendAsync("CloseWindow");
            }
            else
            {
                await Clients.Group(meetingId.ToString()).SendAsync("TaskChange", response);

                await Clients.Group(meetingId.ToString()).SendAsync("Submitted", _controller.GetResponse(meetingId));
            }
        }
Example #2
0
        public MeetingModule(IMeetingService meetingService) : base("/meetings")
        {
            Get["/{id}", true] = async(ctx, cancel) =>
            {
                var request = this.Bind <GetMeetingByIdRequest>();

                var meeting = await meetingService.GetMeetingById(new GetMeetingById()
                {
                    Id = request.Id
                });

                var utcNow   = DateTime.UtcNow;
                var response = new
                {
                    id             = meeting.Id,
                    startUtc       = meeting.StartUtc,
                    endUtc         = meeting.EndUtc,
                    total          = meeting.Total,
                    active         = meeting.Active,
                    attendees      = meeting.Attendees.Select(p => p.Id),
                    elapsedSeconds = GetElapsedSeconds(meeting.StartUtc, utcNow),
                    elapsedMinutes = GetElapsedMinutes(meeting.StartUtc, utcNow),
                    elapsedHours   = GetElapsedHours(meeting.StartUtc, utcNow)
                };

                return(Response.AsJson(response));
            };

            Post["/", true] = async(ctx, cancel) =>
            {
                var meeting = await meetingService.CreateMeeting(new CreateMeeting()
                {
                });

                return(Response.AsJson(meeting));
            };

            Put["/_join", true] = async(ctx, cancel) =>
            {
                var request = this.Bind <JoinMeetingRequest>();

                var meeting = await meetingService.JoinMeeting(new JoinMeeting()
                {
                    UserId    = request.UserId,
                    MeetingId = request.MeetingId
                });

                return(Response.AsJson(meeting));
            };

            Put["/_leave", true] = async(ctx, cancel) =>
            {
                var request = this.Bind <LeaveMeetingRequest>();

                var meeting = await meetingService.LeaveMeeting(new LeaveMeeting()
                {
                    UserId    = request.UserId,
                    MeetingId = request.MeetingId
                });

                return(Response.AsJson(meeting));
            };

            Put["/_start", true] = async(ctx, cancel) =>
            {
                var request = this.Bind <StartMeetingRequest>();

                var meeting = await meetingService.StartMeeting(new StartMeeting()
                {
                    MeetingId = request.MeetingId
                });

                return(Response.AsJson(meeting));
            };

            Put["/_end", true] = async(ctx, cancel) =>
            {
                var request = this.Bind <EndMeetingRequest>();

                var meeting = await meetingService.EndMeeting(new EndMeeting()
                {
                    MeetingId = request.MeetingId
                });

                return(Response.AsJson(meeting));
            };
        }
Example #3
0
        public MeetingModule(IMeetingService meetingService):base("/meetings")
        {
            Get["/{id}", true] = async (ctx, cancel) =>
                {
                    var request = this.Bind<GetMeetingByIdRequest>();

                    var meeting = await meetingService.GetMeetingById(new GetMeetingById()
                        {
                            Id = request.Id
                        });

                    var utcNow = DateTime.UtcNow;
                    var response = new
                        {
                            id = meeting.Id,
                            startUtc = meeting.StartUtc,
                            endUtc = meeting.EndUtc,
                            total = meeting.Total,
                            active = meeting.Active,
                            attendees = meeting.Attendees.Select(p => p.Id),
                            elapsedSeconds = GetElapsedSeconds(meeting.StartUtc,utcNow),
                            elapsedMinutes = GetElapsedMinutes(meeting.StartUtc,utcNow),
                            elapsedHours = GetElapsedHours(meeting.StartUtc,utcNow)
                        };

                    return Response.AsJson(response);
                };

            Post["/", true] = async (ctx, cancel) =>
                {
                    var meeting = await meetingService.CreateMeeting(new CreateMeeting()
                        {

                        });

                    return Response.AsJson(meeting);
                };

            Put["/_join", true] = async (ctx, cancel) =>
                {
                    var request = this.Bind<JoinMeetingRequest>();

                    var meeting = await meetingService.JoinMeeting(new JoinMeeting()
                        {
                            UserId = request.UserId,
                            MeetingId = request.MeetingId
                        });

                    return Response.AsJson(meeting);
                };

            Put["/_leave", true] = async (ctx, cancel) =>
                {
                    var request = this.Bind<LeaveMeetingRequest>();

                    var meeting = await meetingService.LeaveMeeting(new LeaveMeeting()
                        {
                            UserId = request.UserId,
                            MeetingId = request.MeetingId
                        });

                    return Response.AsJson(meeting);
                };

            Put["/_start", true] = async (ctx, cancel) =>
                {
                    var request = this.Bind<StartMeetingRequest>();

                    var meeting = await meetingService.StartMeeting(new StartMeeting()
                        {
                            MeetingId = request.MeetingId
                        });

                    return Response.AsJson(meeting);
                };

            Put["/_end", true] = async (ctx, cancel) =>
                {
                    var request = this.Bind<EndMeetingRequest>();

                    var meeting = await meetingService.EndMeeting(new EndMeeting()
                        {
                            MeetingId = request.MeetingId
                        });

                    return Response.AsJson(meeting);
                };

        }