Example #1
0
        public GetStringExcludedRoomsResponse GetStringExcludedRooms(int centroID, int?oficinaId)
        {
            GetStringExcludedRoomsResponse response = new GetStringExcludedRoomsResponse();
            BlackListSala blackListSalas;

            try
            {
                if (oficinaId == null)
                {
                    blackListSalas = _blackListSalasRepository.GetOne(x => x.IsActivo && x.CentroId == centroID && x.OficinaId == null);
                }
                else
                {
                    blackListSalas = _blackListSalasRepository.GetOne(x => x.IsActivo && x.CentroId == centroID && x.OficinaId == oficinaId);
                }
                if (blackListSalas != null)
                {
                    response.StringExcludedRooms = blackListSalas.Salas;
                }

                response.IsValid = true;
            }
            catch (Exception ex)
            {
                response.IsValid      = false;
                response.ErrorMessage = ex.Message;
            }

            return(response);
        }
Example #2
0
        public async Task <GetRoomResponse> GetSuggestedMeetings(string token, string nombreLista, string entrevistadorMail, DateTime fecha, int centroId, int?oficinaId, bool ignorarDisponibilidad)
        {
            GetRoomResponse response    = new GetRoomResponse();
            var             fechaInicio = DateTime.Parse(fecha.ToUniversalTime().ToString());
            var             fechaFin    = fechaInicio;

            try
            {
                string accessToken = token;


                FindMeetingTimesRequest findMeetingTimeRequest = new FindMeetingTimesRequest();
                var attendees = new List <ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee>();

                List <string> possivelAttendees = new List <string>();

                if (!ignorarDisponibilidad)
                {
                    possivelAttendees.Add(entrevistadorMail);
                }

                foreach (var item in possivelAttendees)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        attendees.Add(new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee()
                        {
                            emailAddress = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.EmailAddress()
                            {
                                address = item, name = item
                            },
                            type = "required"
                        });
                    }
                }

                findMeetingTimeRequest.timeConstraint = new TimeConstraint()
                {
                    timeslots = new List <Timeslot>()
                    {
                        new Timeslot()
                        {
                            start = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Start()
                            {
                                dateTime = fechaInicio, timeZone = "UTC"
                            },
                            end = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.End()
                            {
                                dateTime = fechaFin, timeZone = "UTC"
                            }
                        }
                    }
                };



                // Getting the rooms in the list
                FindRoomsListResponse          listaSalas    = new FindRoomsListResponse();
                GetStringExcludedRoomsResponse excludedRooms = new GetStringExcludedRoomsResponse();
                if (!string.IsNullOrEmpty(nombreLista))
                {
                    listaSalas = await _roomsService.FindRooms(accessToken, nombreLista);

                    excludedRooms = _roomsService.GetStringExcludedRooms(centroId, oficinaId);
                }
                if (excludedRooms.IsValid && !string.IsNullOrEmpty(excludedRooms.StringExcludedRooms))
                {
                    listaSalas = FilterListSalas(listaSalas, excludedRooms.StringExcludedRooms);
                }

                for (int i = 0; i < listaSalas.value.Count; i++)
                {
                    if (i < 18 && i < listaSalas.value.Count)
                    {
                        attendees.Add(new ApiRooms.Graph.Responses.FindMeetingTimeRequest.Attendee()
                        {
                            emailAddress = new ApiRooms.Graph.Responses.FindMeetingTimeRequest.EmailAddress()
                            {
                                address = listaSalas.value[i].address
                            },
                            type = "resource"
                        });
                    }
                    else
                    {
                        break;
                    }
                }


                findMeetingTimeRequest.returnSuggestionReasons = true;
                findMeetingTimeRequest.isOrganizerOptional     = true;
                findMeetingTimeRequest.maxCandidates           = 100;

                findMeetingTimeRequest.attendees = attendees;


                // Get the the meeting times
                var findMeetingTimes = await _roomsService.PostFindMeetingTimes(accessToken, findMeetingTimeRequest);

                if (findMeetingTimes.emptySuggestionsReason.Equals("AttendeesUnavailable"))
                {
                    response.IsValid = false;
                    return(response);
                }

                List <FindMeetingTimesRowViewModel> suggestions = FilterSuggestions(findMeetingTimes, listaSalas);

                if (suggestions.Count == 0)
                {
                    response.IsValid = false;
                    return(response);
                }

                response.IsValid = true;
                response.salas   = new List <SelectListItem>();

                foreach (var sugg in suggestions)
                {
                    foreach (var sala in sugg.Salas)
                    {
                        if (sala.Name != null && sala.Email != null)
                        {
                            SelectListItem listaSala = new SelectListItem();
                            listaSala.Value = sala.Email;
                            listaSala.Text  = sala.Name;

                            response.salas.Add(listaSala);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                response.IsValid      = false;
                response.ErrorMessage = e.Message;
            }
            return(response);
        }