Data stores - OfficeDev/microsoft-teams-apps-timetally GitHub Wiki

The app uses the following data store:

All these resources are created in your Azure subscription. None are hosted directly by Microsoft.

  • Azure SQL Database
    • [ProjectEntity] to store all the project related data added by manager.
    • [TaskEntity] to store all the tasks added by manager in a project.
    • [TimesheetEntity] to store all the daily timesheet related data added by user.
    • [UserProjectMappingEntity] to store user and project mapping.
    • [ConversationEntity] to store conversation details of user to send reminders.

Azure SQL Storage tables

1. ProjectEntity

The table has following rows:

Attribute Comment
Id (PK) Runtime generated random GUID
Title Title of project
ClientName Client's name of project
BillableHours Number of billable hours for project
NonBillableHours Number of non-billable hours for project
StartDate Project start date
EndDate Project end date
StartDateInUtc Project start date in UTC
EndDateInUtc Project end date in UTC
CreatedInTimezone User's timezone while creating project
CreatedBy AAD Id of logged-in user
CreatedOn Datetime of project creation

2. TaskEntity

The table has following rows:

Attribute Comment
Id (PK) Runtime generated random GUID
Title Title of task
IsRemoved True if task is deleted, else False
ProjectId Runtime generated random GUID

3. TimesheetEntity

The table has following rows:

Attribute Comment
Id (PK) Runtime generated random GUID
TaskId Runtime generated random GUID
TaskTitle Title of task
UserId AAD Id of logged-in user
TimesheetDate Date in UTC for which timesheet is filled
HoursFilled Hours filled for task
Status Timesheet status – Saved, Submitted, Approved, Rejected
ManagerComments Comments added by manager on rejecting timesheet
SubmittedOn DateTime of timesheet submission
LastModifiedOn DateTime of recent timesheet modification

4. UserProjectMappingEntity

The table has following rows:

Attribute Comment
ProjectId Runtime generated random GUID
UserId AAD Id of logged-in user
IsBillable True if logged-in user is billable, else false
IsRemoved True if logged-in user is removed from project, else false

5. ConversationEntity

The table has following rows:

Attribute Comment
UserId AAD Id of logged-in user
ConversationId Bot conversation Id for sending notifications