/// <summary> /// Method posting an incoming delete of a user into the MS Graph API. /// </summary> /// <param name="rabbitMQUser">Deleted user sent by the RabbitMQ message broker</param> public void AttendanceDelete(RabbitMQAttendance rabbitMQAttendance) { RestClient restClient = new RestClient(); RestRequest restRequest = new RestRequest(); CalendarAttendees attendees = new CalendarAttendees(); Master masterOrganiser = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.UUID); Master masterUserId = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.AttendeeId); Master masterEventId = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.EventId); //graph attendees ophalen uit event in graph BearerToken = services.RefreshAccesToken(); restClient.BaseUrl = new Uri($"https://graph.microsoft.com/v1.0/users/{masterOrganiser.SourceEntityId}/events/{masterEventId.SourceEntityId}"); restRequest.AddHeader("Authorization", BearerToken.Token_type + " " + BearerToken.Access_token); var response = restClient.Get(restRequest); attendees = JsonConvert.DeserializeObject <CalendarAttendees>(response.Content); string email = services.GetEmailFromUUID(masterUserId.SourceEntityId); attendees.Attendees = (from attendee in attendees.Attendees where attendee.EmailAddress.Address != email select attendee).ToList(); var json = JsonConvert.SerializeObject(attendees); restRequest.AddJsonBody(json); Console.WriteLine(json); response = restClient.Patch(restRequest); Console.WriteLine(response.StatusCode); }
public void ConvertAttendanceToXML() { RabbitMQAttendance rabbitMQAttendance = new RabbitMQAttendance(); rabbitMQAttendance.Header.Method = XMLMethod.CREATE; rabbitMQAttendance.UUID = new Guid("dcf8fa36-c07d-11eb-8529-0242ac130003"); rabbitMQAttendance.CreatorId = new Guid("bf2d8864-c07d-11eb-8529-0242ac130003"); rabbitMQAttendance.AttendeeId = new Guid("c6365d02-c07d-11eb-8529-0242ac130003"); rabbitMQAttendance.EventId = new Guid("dcf8fa36-c07d-11eb-8529-0242ac130003"); string xml = xmlController.ConvertObjectToXML(rabbitMQAttendance); Assert.IsTrue(xmlController.XSDValidatie(xml, "Attendance")); }
public void AttendanceCreate(RabbitMQAttendance rabbitMQAttendance) { RestClient restClient = new RestClient(); RestRequest restRequest = new RestRequest(); CalendarAttendees attendees = new CalendarAttendees(); CalendarAttendee attendee = new CalendarAttendee(); Master masterOrganiser = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.CreatorId); Master masterUserId = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.AttendeeId); Master masterEventId = masterDBServices.GetGraphIdFromMUUID(rabbitMQAttendance.EventId); //graph attendees ophalen uit event in graph BearerToken = services.RefreshAccesToken(); restClient.BaseUrl = new Uri($"https://graph.microsoft.com/v1.0/users/{masterOrganiser.SourceEntityId}/events/{masterEventId.SourceEntityId}"); restRequest.AddHeader("Authorization", BearerToken.Token_type + " " + BearerToken.Access_token); var response = restClient.Get(restRequest); attendees = JsonConvert.DeserializeObject <CalendarAttendees>(response.Content); //graph user ophalen en in attendee lijst attendees steken User user = services.GetUserFromUUID(masterUserId.SourceEntityId); attendee.EmailAddress.Name = user.DisplayName; attendee.EmailAddress.Address = user.UserPrincipalName; attendee.Type = "required"; attendees.Attendees.Add(attendee); var json = JsonConvert.SerializeObject(attendees); restRequest.AddJsonBody(json); Console.WriteLine(json); response = restClient.Patch(restRequest); Console.WriteLine(response.StatusCode); if (response.StatusCode == System.Net.HttpStatusCode.OK) { //newid voor MasterDB = organiserId + userId + eerste 32 chars van eventId + laatste 32 chars van eventId string newId = masterOrganiser.SourceEntityId + "%" + masterUserId.SourceEntityId + "%" + masterEventId.SourceEntityId.Substring(0, 32) + "%" + masterEventId.SourceEntityId.Substring(masterEventId.SourceEntityId.Length - 32, 32); masterDBServices.CreateEntity(rabbitMQAttendance.UUID, newId, "Attendance"); //masterDBService.ChangeEntityVersion(rabbitMQUser.UUID); } }
static void Main(string[] args) { /* --- Instatiate the Services --- */ Services OfficeService = new Services(); UserService userService = new UserService(); EventService eventService = new EventService(); AttendanceService attendanceService = new AttendanceService(); XmlController xmlController = new XmlController(); /* --- Instatiate timer and trigger sendHeartbeat every second --- */ HeartBeat heartBeat = new HeartBeat(); Timer timer = new Timer(); timer.Elapsed += new ElapsedEventHandler(heartBeat.sendHeartBeat); timer.Interval = 1000; timer.Start(); /* --- Instatiate List of CalendarEvents --- */ List <CalendarEvent> events = new List <CalendarEvent>(); /* --- Instatiate connection with RabbitMQ --- */ Uri rabbitMQUri = new Uri(Constant.RabbitMQConnectionUrl); string queueEventName = Constant.RabbitMQEventQueueName; string queueUserName = Constant.RabbitMQUserQueueName; string queueAttendanceName = Constant.RabbitMQAttendanceQueueName; var factory = new ConnectionFactory { Uri = rabbitMQUri }; using var connection = factory.CreateConnection(); using var channel = connection.CreateModel(); /* --- Instatiate consumer for event, user & attendance queue --- */ var eventConsumer = new EventingBasicConsumer(channel); var userConsumer = new EventingBasicConsumer(channel); var attendanceConsumer = new EventingBasicConsumer(channel); /* --- Execute valid User changes (create, dupdate, delete) from other systems (Canvas, Frontend) )--- */ // User userConsumer.Received += (sender, e) => { var message = e.Body.ToArray(); var xml = Encoding.UTF8.GetString(message); Console.WriteLine(xml); if (xmlController.XSDValidatie(xml, "user")) { RabbitMQUser result = xmlController.ConvertXMLtoObject <RabbitMQUser>(xml); Console.WriteLine(result.Header.Method); Console.WriteLine(result.Header.Source); Console.WriteLine(result.UUID); Console.WriteLine(result.EntityVersion); Console.WriteLine(result.LastName); Console.WriteLine(result.FirstName); Console.WriteLine(result.EmailAddress); Console.WriteLine(result.Role); if (result.Header.Source != XMLSource.PLANNING) { switch (result.Header.Method) { case XMLMethod.CREATE: userService.UserCreate(result); break; case XMLMethod.UPDATE: userService.UserUpdate(result); break; case XMLMethod.DELETE: userService.UserDelete(result); break; } } } }; /* --- Execute valid Event changes (create, dupdate, delete) from other systems (Canvas, Frontend) --- */ //Event eventConsumer.Received += (sender, e) => { var message = e.Body.ToArray(); var xml = Encoding.UTF8.GetString(message); Console.WriteLine(xml); if (xmlController.XSDValidatie(xml, "event")) { RabbitMQEvent result = xmlController.ConvertXMLtoObject <RabbitMQEvent>(xml); Console.WriteLine(result.Header.Method); Console.WriteLine(result.Header.Source); Console.WriteLine(result.UUID); Console.WriteLine(result.EntityVersion); Console.WriteLine(result.Title); Console.WriteLine(result.OrganiserId); Console.WriteLine(result.Description); Console.WriteLine(result.Start); Console.WriteLine(result.End); if (result.Header.Source != XMLSource.PLANNING) { switch (result.Header.Method) { case XMLMethod.CREATE: eventService.EventCreate(result); break; case XMLMethod.UPDATE: eventService.EventUpdate(result); break; case XMLMethod.DELETE: eventService.EventDelete(result); break; } } } }; /* --- Execute valid Attendance changes (create, delete) from other systems (Canvas, Frontend) --- */ //Attendance attendanceConsumer.Received += (sender, e) => { var message = e.Body.ToArray(); var xml = Encoding.UTF8.GetString(message); Console.WriteLine(xml); if (xmlController.XSDValidatie(xml, "attendance")) { RabbitMQAttendance result = xmlController.ConvertXMLtoObject <RabbitMQAttendance>(xml); Console.WriteLine(result.Header.Method); Console.WriteLine(result.UUID); Console.WriteLine(result.CreatorId); Console.WriteLine(result.AttendeeId); Console.WriteLine(result.EventId); switch (result.Header.Method) { case XMLMethod.CREATE: attendanceService.AttendanceCreate(result); break; case XMLMethod.DELETE: attendanceService.AttendanceDelete(result); break; } } }; /* --- Consume the event, user & attendance queues --- */ channel.BasicConsume(queueUserName, true, userConsumer); channel.BasicConsume(queueEventName, true, eventConsumer); channel.BasicConsume(queueAttendanceName, true, attendanceConsumer); Console.ReadLine(); }