Hi everyone,
I am in the process of creating a check in\check out app for events run by my unit. These events will be attended mostly by internal staff but there will be a few externals. The premise is that records will be created in the sharepoint list by an email lookup (for internals) and typing in the email for externals. Users will be able to create a record at check in, submit, and edit that record at check out and resubmit for the final time. Users will have different questions to answer at the check in and check out process so at the end there should be one record for each user with the check in and check out sections completed. I would like only checked in users (users that have created a record) to be able to check out. Perhaps the check out section could also be an email look up where your email only appears if you have checked in.
At this stage I have three screens:
1. Welcome Screen (Image1): option to check in or check out
2. Check In Screen (Image 2): Form feeding in to the sharepoint list where a record is to be created by checking in
3. Check Out Screen (Image 3): Form where a created record is looked up, edited and resubmitted.
Would this be possible or is it a huge leap?! I'm fairly new to Powerapps and would very much appreciate any advice you might have!
Thanks so much!
Charith
Solved! Go to Solution.
Hi @snan004 :
I'm not sure if my understanding is correct.
Could you help me confirm whether my understanding is correct:
About your data source:
Data source 1:maindatasouce
Field name | Filed type |
Internal_email_lookup | Lookup |
EventName | choice |
YouAreHereTo | choice |
YouAreA | choice |
Text | |
HowLikely | choice |
Wouldyou | Yes/No(defaut:yes) |
Data source 2: Internal_email
Field name | Filed type |
Internal_email | Text |
About the attachments:
1\Screen1:
Button1(Check in):navigate to screen2
Button2(Check out):navigate to screen3
2\Screen2:
Form1:a form in New mode.
Button3(Check in): submit Form1 then navigate to screen3
3\Screen3:
Form2:a form in Edit mode.
Button4(Check out): submit Form2.
About the Features:
1、If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user.
2、If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.
I assume the above assumption holds.
I’ve made a test for your reference:
1\Screen1
Button(Check in):
OnSelect:
Navigate(Screen1)
Button(Check out):
OnSelect:
Navigate(Screen3)
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
2\Screen2
Form1:
DataSource:
maindatasouce
DefaultMode:
New
Button(Check in):
OnSelect:
SubmitForm(Form1);Navigate(Screen3)
Attachment:Screen2.jpg
3\Screen3
Form2:
DataSource:
maindatasouce
DefaultMode:edit
Item:
LookUp(
Sort(
maindatasouce,
Created,
Descending
),
'Created By'.Email = User().Email /* Search the latest record created by the current user*/
)
Button(Check Out):
OnSelect:
SubmitForm(Form2);
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
Attachment:Screen3.jpg
Result:
Attachment:result.jpg
Best Regards,
Bof
Hi @snan004 :
I'm not sure if my understanding is correct.
Could you help me confirm whether my understanding is correct:
About your data source:
Data source 1:maindatasouce
Field name | Filed type |
Internal_email_lookup | Lookup |
EventName | choice |
YouAreHereTo | choice |
YouAreA | choice |
Text | |
HowLikely | choice |
Wouldyou | Yes/No(defaut:yes) |
Data source 2: Internal_email
Field name | Filed type |
Internal_email | Text |
About the attachments:
1\Screen1:
Button1(Check in):navigate to screen2
Button2(Check out):navigate to screen3
2\Screen2:
Form1:a form in New mode.
Button3(Check in): submit Form1 then navigate to screen3
3\Screen3:
Form2:a form in Edit mode.
Button4(Check out): submit Form2.
About the Features:
1、If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user.
2、If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.
I assume the above assumption holds.
I’ve made a test for your reference:
1\Screen1
Button(Check in):
OnSelect:
Navigate(Screen1)
Button(Check out):
OnSelect:
Navigate(Screen3)
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
2\Screen2
Form1:
DataSource:
maindatasouce
DefaultMode:
New
Button(Check in):
OnSelect:
SubmitForm(Form1);Navigate(Screen3)
Attachment:Screen2.jpg
3\Screen3
Form2:
DataSource:
maindatasouce
DefaultMode:edit
Item:
LookUp(
Sort(
maindatasouce,
Created,
Descending
),
'Created By'.Email = User().Email /* Search the latest record created by the current user*/
)
Button(Check Out):
OnSelect:
SubmitForm(Form2);
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
Attachment:Screen3.jpg
Result:
Attachment:result.jpg
Best Regards,
Bof
Hi @v-bofeng-msft - thanks very much for your reply!
Could you help me confirm whether my understanding is correct:
About your data source:
My data source is a share point list with conditional fields - certain fields are visible depending on selections to drop down questions.
Data source 1:maindatasouce
Field name | Filed type |
Internal_email_lookup | Lookup |
EventName | choice |
YouAreHereTo | choice |
YouAreA | choice |
Text | |
HowLikely | choice |
Wouldyou | Yes/No(defaut:yes) |
Data source 2: Internal_email
Field name | Filed type |
Internal_email | Text |
About the attachments:
1\Screen1:
Button1(Check in):navigate to screen2
Button2(Check out):navigate to screen3
2\Screen2:
Form1:a form in New mode.
Button3(Check in): submit Form1 then navigate to screen3 -
After the check in step (submit form 1, it would navigate back to the welcome screen (check out will happen at the end of the event)
3\Screen3:
Form2:a form in Edit mode.
Button4(Check out): submit Form2.
Clarification about the Forms - it's the same form on both the check out and check in screens (from the same sharepoint list), with different fields visible depending on the section. I did not know how to include the same form across multiple screens so I did the above
About the Features:
1、If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user. - After creating a new record (submitform in check in) it would jump back to the welcome screen
2、If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.
I assume the above assumption holds.
I’ve made a test for your reference:
1\Screen1
Button(Check in):
OnSelect:
Navigate(Screen1)
Button(Check out):
OnSelect:
Navigate(Screen3)
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
Could you clarify who you mean by User here? The app has to be available for both internal and external users and the app would be available to people through a communal device so I would be logged in (through my user account) and people arriving will be filling it in (they will not be 'logged in' so to speak). So the 'created by' field in the sharepoint list will always be me. Except for when the users will have a link and be able to log in to the portal to access the app. I would like it to have both options (for internals and externals..)
2\Screen2
Form1:
DataSource:
maindatasouce
DefaultMode:
New
Button(Check in):
OnSelect:
SubmitForm(Form1);Navigate(Screen3)
Attachment:Screen2.jpg
3\Screen3
Form2:
DataSource:
maindatasouce
DefaultMode:edit
Item:
LookUp( Sort( maindatasouce, Created, Descending ), 'Created By'.Email = User().Email /* Search the latest record created by the current user*/ )
Button(Check Out):
OnSelect:
SubmitForm(Form2);
DisplayMode:
If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/
Hi @snan004 :
Firstly,I suggest that you set Internal_email_lookup to Text type then make users directly filter their email address to find the corresponding record, and then modify the record.
Reason:
1. If users are allowed to create new records freely, there is no guarantee that the same user will not create multiple duplicate records.(Data uniqueness)
2.If a person has created multiple records, it will be very troublesome to find out which record need modify.(Data retrieval)
2.You can't tell who is the external staff and which part is the internal staff.
Secondly,I suggest you use the registration login mechanism.
the reason:
1.Because of the use of public equipment, it is impossible to distinguish the user ’s identity through ‘Creat by’.Using the login system, you can distinguish between internal and external employees.
2.Through account authentication, you can additionally grant internal employees the authority to create new records.
About establishing a login system,I think this link will help you a lot:
Best Regards,
Bof