probits-as / MeetEasier

MeetEasier is a web application that visualizes meeting room availability. It works using Microsoft Graph API in Microsoft 365.
GNU General Public License v3.0
9 stars 3 forks source link

Booking function #8

Open fkmeland opened 2 years ago

fkmeland commented 2 years ago

image single-room.zip

Originally posted by @ff12345678 in https://github.com/probits-as/MeetEasier/issues/7#issuecomment-1301248191

fkmeland commented 2 years ago

A fork that has implemented this and could be used for inspiration:

Originally posted by @ff12345678 in https://github.com/probits-as/MeetEasier/issues/7#issuecomment-1301293293

ff12345678 commented 2 years ago

Good night

Sorry, I was only able to test it now, but it doesn't work,

Compiling some warnings, the project runs normally, but when I try to reserve the room the popup appears, but it doesn't reserve the room.

Any problems with the code or could it be authorities with Azure/o365?

Please help me

Thanks

@.***

De: Finn Kristian Meland @.> Enviada: 3 de novembro de 2022 07:05 Para: probits-as/MeetEasier @.> Cc: ff12345678 @.>; Mention @.> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

A fork that has implemented this and could be used for inspiration:

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1301715297, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWID2EMAL3AJUHY2M6DWGNPZNANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>

fkmeland commented 2 years ago

Hmm... sorry I didn't have much time to work on it yesterday πŸ˜… But, it should mostly work, I tested it briefly, booking, and extend/end/book after should also work.

You will need to grant another permisson to the application in Azure, the permission Calendars.ReadWrite is needed for booking, did you add this permission and grant it? Any errors in the terminal when booking?

ff12345678 commented 2 years ago

I am grateful for your availability and professionalism.

I don't get a terminal error when I run booking, and extend/end/book but it's like doing nothing.

Yes I gave the permissions Calendars.ReadWrite I was suspicious that it could come from there but it was not the case.

The terminal responds, the button is functional, Booking Now appears but does nothing, as if it did not reserve the room Could you help me please?

Thank you very much

@.***

[Uma imagem com texto Descrição gerada automaticamente]

De: Finn Kristian Meland @.> Enviada: 4 de novembro de 2022 04:24 Para: probits-as/MeetEasier @.> Cc: ff12345678 @.>; Mention @.> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

Hmm... sorry I didn't have much time to work on it yesterday πŸ˜… But, it should mostly work, I tested it briefly, booking, and extend/end/book after should also work.

You will need to grant another permisson to the application in Azure, the permission Calendars.ReadWrite is needed for booking, did you add this permission and grant it? Any errors in the terminal when booking?

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1302951475, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWKIC7REL6LAPV46GCDWGSFXXANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>

fkmeland commented 2 years ago

It's strange that your terminal isn't outputting anything, you are starting it manually in the terminal / command line, or are you starting it via script etc?

Try starting the application with npm run start, it should output some data in the terminal / commandline. When you click the "Book Now" button it should log:

This is a screenshot from my terminal / command line after running npm run start and extending a meeting: image As you can see, the response from MSGRAPH is also printed out, any errors should also be displayed.

ff12345678 commented 2 years ago

Hello

I've been testing today and apparently it's working, today I have some urgent matters to finish tonight, I'll test it in detail and let you know.

I don't know how to thank you for your help 😊

A situation I wanted to put would be in the single-room panel a button to view the flightboard simply for x seconds to eventually see an empty room after this popup would be closed and we would be seeing the initial panel of the single room again

You think it would be very complicated, could you help me, that would allow a person when he is next to a room that is busy to have a view of other available rooms and go to the available room.

Thanks,

Route Room Booking @. | ROOM-xxxx | 2022-11-04T10:53:16.572Z | 2022-11-04T10:53:29.776Z | EndNow { @.': https://graph.microsoft.com/v1.0/$metadata#users('xxxxxx%xxxxxxx')/calendar/events/$entity, @.': 'xxxxxxxxxxxxxxxxxx', id: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', createdDateTime: '2022-11-04T10:53:17.046066Z', lastModifiedDateTime: '2022-11-04T10:53:31.0044862Z', changeKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', categories: [], transactionId: null, originalStartTimeZone: 'UTC', originalEndTimeZone: 'UTC', iCalUId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', reminderMinutesBeforeStart: 15, isReminderOn: true, hasAttachments: false, subject: 'Booked by MeetEasier', bodyPreview: 'Room Booked by Room Panel', importance: 'normal', sensitivity: 'normal', isAllDay: false, isCancelled: false, isOrganizer: true, responseRequested: true, seriesMasterId: null, showAs: 'busy', type: 'singleInstance', webLink: 'https://outlook.office365.com/owa/?itemid=xxxxxxxxxxxxxxxxxxx isOnlineMeeting: false, onlineMeetingProvider: 'unknown', allowNewTimeProposals: true, occurrenceId: null, isDraft: false, hideAttendees: false, responseStatus: { response: 'organizer', time: '0001-01-01T00:00:00Z' }, body: { contentType: 'html', content: '\r\n' + '\r\n' + '\r\n' + '\r\n' + '\r\n' + 'Room Booked by Room Panel\r\n' + '\r\n' + '\r\n' }, start: { dateTime: '2022-11-04T10:53:16.5720000', timeZone: 'UTC' }, end: { dateTime: '2022-11-04T10:53:29.7760000', timeZone: 'UTC' }, location: { displayName: @.', locationType: 'default', uniqueId: @.', uniqueIdType: 'private' }, locations: [ { displayName: @.', locationType: 'default', uniqueId: @.', uniqueIdType: 'private' } ], recurrence: null, attendees: [ { type: 'required', status: [Object], emailAddress: [Object] } ], organizer: { emailAddress: { name: 'ROOM-xxxx', address: @.' } }, onlineMeeting: null }

fkmeland commented 2 years ago

Glad you got it working, the code is messy, and needs more work, and I'm still learning node / javascript, my goto language is golang, which is one of the reason I want to port the node backend to golang, and embed the react-ui inside the golang executable.

It sounds like a good idea, to be able to show a modified flightboard with only available rooms, and perhaps a book now button to be able to book that room from the device/room you are currently at. Shouldn't be too much work to implement this as the elements required for this should already exist in the codebase, just a matter of desiging the react-component and reusing some queries etc, would need to modify the getRooms query to only show available rooms.

I don't think I have any more time to work on it this week, but I wil have a look at it next week.

ff12345678 commented 2 years ago

Many thanks for your responsiveness, availability and professionalism.

Thank you again for your help and eagerly await your feedback.

I think this change will be of great interest to the community. It is true that if the room is occupied, having an option on site to see which room is available would be great

I wish you a very good weekend

De: Finn Kristian Meland @.> Enviada: 4 de novembro de 2022 12:58 Para: probits-as/MeetEasier @.> Cc: ff12345678 @.>; Mention @.> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

Glad you got it working, the code is messy, and needs more work, and I'm still learning node / javascript, my goto language is golang, which is one of the reason I want to port the node backend to golang, and embed the react-ui inside the golang executable.

It sounds like a good idea, to be able to show a modified flightboard with only available rooms, and perhaps a book now button to be able to book that room from the device/room you are currently at. Shouldn't be too much work to implement this as the elements required for this should already exist in the codebase, just a matter of desiging the react-component and reusing some queries etc, would need to modify the getRooms query to only show available rooms.

I don't think I have any more time to work on it this week, but I wil have a look at it next week.

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1303493051, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWPT22GTRHJSGOO3XIDWGUB4VANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>

ff12345678 commented 2 years ago

Good afternoon,

I hope everything is fine with you.

I would like to know if you had time to see the situation we talked about last week, I know that it may take some time and have some complexity. Certainly taking into account its lack of availability,

I would like to know if it would be possible to insert only a button β€œView availability all room” when the user clicked on this button and opened a poppup with the same format as the flightboard, this popup was closed manually or if the user did not close, it closed automatically after 10 seconds. Do you think you can help me, I send below a small graphic scheme with what I was thinking. Do you think you could help me?

Thanks

@.***

@.***

De: Filipe Fonseca Enviada: 4 de novembro de 2022 13:43 Para: probits-as/MeetEasier @.>; probits-as/MeetEasier @.> Cc: Mention @.***> Assunto: RE: [probits-as/MeetEasier] Booking function (Issue #8)

Many thanks for your responsiveness, availability and professionalism.

Thank you again for your help and eagerly await your feedback.

I think this change will be of great interest to the community. It is true that if the room is occupied, having an option on site to see which room is available would be great

I wish you a very good weekend

De: Finn Kristian Meland @.**@.>> Enviada: 4 de novembro de 2022 12:58 Para: probits-as/MeetEasier @.**@.>> Cc: ff12345678 @.**@.>>; Mention @.**@.>> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

Glad you got it working, the code is messy, and needs more work, and I'm still learning node / javascript, my goto language is golang, which is one of the reason I want to port the node backend to golang, and embed the react-ui inside the golang executable.

It sounds like a good idea, to be able to show a modified flightboard with only available rooms, and perhaps a book now button to be able to book that room from the device/room you are currently at. Shouldn't be too much work to implement this as the elements required for this should already exist in the codebase, just a matter of desiging the react-component and reusing some queries etc, would need to modify the getRooms query to only show available rooms.

I don't think I have any more time to work on it this week, but I wil have a look at it next week.

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1303493051, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWPT22GTRHJSGOO3XIDWGUB4VANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>

fkmeland commented 2 years ago

Good morning.

I haven't had any time yet to work on this project, as it has been busy at work, but I might have some time later tonight after gym, if I didn't die at the gym πŸ’ͺπŸ˜‚, and maybe some time tomorrow as well.

I think I might have a POC ready before the weekend.

The feature you are talking about should be straight forward to implement. There was no image attached to your reply to illustrate what you where thinking the feature should look like, it could be that Github doesn't like images in email-replies...

ff12345678 commented 2 years ago

Thanks for your help !!!

I wish you a lot of strength and luck with your gym.

I look forward to hearing from you, do not hesitate to contact me if you have any questions that might help.

thanks again

De: Finn Kristian Meland @.> Enviada: 9 de novembro de 2022 07:03 Para: probits-as/MeetEasier @.> Cc: ff12345678 @.>; Mention @.> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

Good morning.

I haven't had any time yet to work on this project, as it has been busy at work, but I might have some time later tonight after gym, if I didn't die at the gym πŸ’ͺπŸ˜‚, and maybe some time tomorrow as well.

I think I might have a POC ready before the weekend.

The feature you are talking about should be straight forward to implement. There was no image attached to your reply to illustrate what you where thinking the feature should look like, it could be that Github doesn't like images in email-replies...

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1308301603, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWJ3EB46FMY2IQG2Y53WHNECHANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>

Axel-Roy commented 2 years ago

Hello, excuse me for cutting your consultation but I currently have an error with the Booking function. It gives me a 401 Unauthorized error when I try to book a room. I have however given all the authorizations to the msgraph account. Can you help me find the problem ?

Captureeer

fkmeland commented 2 years ago

Hi, hmm, it seems like the route /api/roombooking is using the ews api for booking and not the msgraph api.

See the function on line 65 in file app/routes.js

  // books a room
  app.get('/api/roombooking', function (req, res) {
    let api;
    if (config.calendarSearch.useGraphAPI === 'true') {
      api = require('./msgraph/roombooking.js');
    } else {
      api = require('./ews/roombooking.js');
    }

You could remove the if statement and force it to use msgraph. Also when I read this codeblock, there could be an issue with case-sensitivity when checking the config.calendarSearch.useGraphAPI value.

Did you set SEARCH_USE_GRAPHAPI=true in your .env file? (true in lowercase)

You are using this for o365? I havent worked on implementing the original function for booking through the ews-api, as the only use for this now is on prem exchange-servers, wouldn't take much time to fix, but havent prioritized it yet.

tomaskovacik commented 2 years ago

simply remove ews support

https://techcommunity.microsoft.com/t5/exchange-team-blog/upcoming-api-deprecations-in-exchange-web-services-for-exchange/ba-p/2813925

fkmeland commented 2 years ago

I agree, but some people might still use it for old on prem solutions, but then again, the original work from danxfisher should work just fine for them. I think I should just remove it from this fork as you suggest.

Axel-Roy commented 2 years ago

Thanks for your help, I just changed the route.js file, but I just realized that it is my roombooking.js file that is causing problems, I think there are some changes to make on it or then I have a bad version of it. Do you have the modifications to make or do you have the updated file ?

image

fkmeland commented 2 years ago

What file is this in your screenshot?

You will need the files app/msgraph/roombooking.js and app/msgraph/graph.js from the feat/roombooking branch... or just checkout the entire branch and run as is...

The BookRoom function is located in app/msgraph/graph.js and the function that routes.js calls is located in app/msgraph/roombooking.js

https://github.com/probits-as/MeetEasier/blob/feat/roombooking/app/msgraph/graph.js https://github.com/probits-as/MeetEasier/blob/feat/roombooking/app/msgraph/roombooking.js https://github.com/probits-as/MeetEasier/blob/feat/roombooking/app/routes.js

fkmeland commented 2 years ago

So, status update on the "View available rooms" feature (maybe it should be its own issue πŸ€”).

I said I would probably have a working POC before the weekend, but I'm sorry to say that I have not been able to work on this yet 😞, hopefully I will get a POC ready next week.

ff12345678 commented 2 years ago

Hello Thank you for your reply and I look forward to your feedback. I would really need to have this feature because our offices have many rooms and are far from each other which would allow for better management and visualization. Once again I would like to thank you for your availability, responses and professionalism.

fkmeland commented 1 year ago

Just a quick update... I'm sorry to say I still haven't been able to work on this, hopefully things will quiet down next week.

@Axel-Roy How did it go with your booking issues? (Just curious 😊)

ff12345678 commented 1 year ago

Thank you in advance for your feedback and I look forward to your availability.

Thanks,

De: Finn Kristian Meland @.> Enviada: 17 de novembro de 2022 20:06 Para: probits-as/MeetEasier @.> Cc: ff12345678 @.>; Mention @.> Assunto: Re: [probits-as/MeetEasier] Booking function (Issue #8)

Just a quick update... I'm sorry to say I still haven't been able to work on this, hopefully things will quiet down next week.

@Axel-Royhttps://github.com/Axel-Roy How did it go with your booking issues? (Just curious 😊)

β€” Reply to this email directly, view it on GitHubhttps://github.com/probits-as/MeetEasier/issues/8#issuecomment-1319140404, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD4OWWKLMP65RN6XESSKL73WI2FZBANCNFSM6AAAAAARV2HKHY. You are receiving this because you were mentioned.Message ID: @.**@.>>