Ejemplo n.º 1
0
        public async Task <FindMeetingTimeResponse> PostFindMeetingTimes(string accessToken, FindMeetingTimesRequest findMeetingTimesRequest)
        {
            string endpoint = "https://graph.microsoft.com/v1.0/me/findMeetingTimes";

            using (var client = new HttpClient())
            {
                using (var request = new HttpRequestMessage(HttpMethod.Post, endpoint))
                {
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                    findMeetingTimesRequest.meetingDuration = "PT1H";

                    request.Content = new StringContent(JsonConvert.SerializeObject(findMeetingTimesRequest), Encoding.UTF8, "application/json");

                    using (var response = await client.SendAsync(request))
                    {
                        if (response.IsSuccessStatusCode)
                        {
                            string stringResult = await response.Content.ReadAsStringAsync();

                            FindMeetingTimeResponse findMeetingTimeResponse = JsonConvert.DeserializeObject <FindMeetingTimeResponse>(stringResult);
                            return(findMeetingTimeResponse);
                        }
                        return(null);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        private List <FindMeetingTimesRowViewModel> FilterSuggestions(FindMeetingTimeResponse findMeetingTimes, FindRoomsListResponse listaTodasSalas)
        {
            var retVal = new List <FindMeetingTimesRowViewModel>();

            foreach (var suggestion in findMeetingTimes.meetingTimeSuggestions)
            {
                var rooms     = new List <Sala>();
                var attendees = new List <string>();
                int personas  = 0;

                foreach (var attendee in suggestion.attendeeAvailability)
                {
                    if (attendee.attendee.emailAddress.address.Substring(0, 4) == "ROOM")
                    {
                        if (attendee.availability == "free")
                        {
                            var sala = listaTodasSalas.value.Find(m => m.address.Equals(attendee.attendee.emailAddress.address));

                            rooms.Add(new Sala()
                            {
                                Email = attendee.attendee.emailAddress.address, Name = sala.name
                            });
                        }
                    }
                    else
                    {
                        personas++;
                        if (attendee.availability == "free")
                        {
                            attendees.Add(attendee.attendee.emailAddress.address);
                        }
                        else
                        {
                            attendees.Clear();
                            break;
                        }
                    }
                    //COMENTAR EL SIGUIENTE IF PARA QUE DEVUELVA MAS SUGERENCIAS DE SALAS
                    //if (rooms.Count > 0 && attendees.Count == personas)
                    //{
                    //    break;
                    //}
                }

                if (rooms.Count > 0 && attendees.Count == personas)
                {
                    StringBuilder strb = new StringBuilder();
                    foreach (var item in attendees)
                    {
                        strb.Append(item);
                        strb.Append('#');
                    }

                    var sugg = new FindMeetingTimesRowViewModel()
                    {
                        Fecha     = suggestion.meetingTimeSlot.start.dateTime,
                        Salas     = rooms,
                        attendees = strb.ToString()
                    };
                    retVal.Add(sugg);
                }
            }

            return(retVal);
        }