---
# System prepended metadata

title: Evidence Tool App Documentation Legacy
tags: [Documentation, API]

---

# Evidence Tool App Documentation Legacy

###### tags: `Documentation` `API`

## TABLE OF CONTENTS
[TOC]

## Getting Started
 ##### Local Setup for Existing .NET Core & Vue
*  **Development Tools**
    *  Visual Studio 2019 / 2017
    *  SQL Server & Server Management Studio 2017 & above.
    *  .Net 3.1 version
    *   Hangfire.io (Background process)
    *   Microsoft Entity Framework (seeding & migrations)
*  **Environment Keys**
    *  Microsoft Azure Storage (Image blob)
    *  Coconut.co (Video encoder)
    *  Google Auth (Sign in & Sign up)
    *  SMTP Host (Email process)
    *  JWTBearer Token (Existing in `appsettings.json`)
*  Local Environment Setup
    *  **Project Setup**
        * In EvidenceTool -> Properties -> Debug
        * Set `Key=ASPNETCORE_ENVIRONMENT | Value=Local`
        * Then Save the File
    *  **Keys Settings**
        *  Open `appsettings.json`
        *  Set `GeneralOptions['EnvironmentName'] to Local`
        *  Create a new file named `appsettings.Local.json`
        *  Copy all details in `appsettings.json` and paste it to `appsettings.Local.json`
        *  Replace the ff with your generated keys:
            *  SMTP Options
            *  Google Options (Google Auth)
            *  Azure Options
            *  Coconut Options
            *  GeneralOptions: `AppBaseUrl: https://127.0.0.1/api/v1/`
            *  GeneralOptions: `EnvironmentName: Local`
     *  **Database Setup**
        *  Open SQL Server management Studio (SSMS)
        *  Create a Database named `SimpleCase`
        *  In Visual Studio, Open Package Manager Console
        *  Enter `dotnet tool install --global dotnet-ef` to verify you have entity framework.
        *  Followed with `dotnet ef migration update`
        *  In your SSMS, you should see tables now exist in `SimpleCase`
    * **Vue Setup**
        * Open Package Manager Console
        * Enter `cd EvidenceTool`
        * Then followed with `npm install`
        * If success done!

    * **Run Project**
        * Click IISExpress Button in Visual Studio.
## Frontend Guide (Vue & .NET)
* Directory Guide
    * EvidenceTool -> Views (ASP.NET Page)
        * Accounts 
        * Admin
        * Case
        * Client
        * Client Case
        * Home
        * Shared 
    * EvidenceTool -> ClientApp (Vue)
        * Components
        * Router (path)
        * Services (axios requests)
        * Assets, Static, CSS (Media, Styles)
        * App.vue
        * boot-app.js
        * boot-server.js
        * main.js
        
## Backend Guide
* Directory Guide
    * EvidenceTool -> Classes
        * Statup.cs (Configuration of the Website)
        * Program.cs (Environment Configuration)
        * Constant.cs (Global values)
        * Controllers (API route calls)
        * Models (Database querys [get/set]


## Process flow
![](https://i.imgur.com/TrYl982.jpg)


## Data Schema
### **Attorney to Cases**
![](https://i.imgur.com/61hidFi.png)


### **Client to Cases**
![](https://i.imgur.com/nzOp9S6.png)


### **Attorney/Client's Cases to Storage (Coconut for Videos & Azure for Images)**
![](https://i.imgur.com/cLnmVdD.png)

## API Routes Reference from Simple Case
| Accounts | Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/account     | Default     | Initial Route     | 
| api/account/register     | POST     | Attorney Registration    | 200
| api/account/login     | POST     | Attorney Sign in    | 200
| api/account/reset-password     | POST     | Attorney Reset password    | userId, code
| api/account/forgot-password     | POST     | Attorney Forgot password    | 200
| api/account/logout     | POST     | Attorney Sign out    | 200
| api/account/me     | POST(`ATTORNEY/CLIENT[JWTOKEN]`)     | Dashboard view for attorney & client(require: jwtoken)    | isAuthenticated, role, name,  clientId

| Cases | Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/cases     | Default     | Initial Route     |
| api/cases/{caseId}     | DELETE    | Case Fetch/Removal   | 200
| api/cases/{caseId}     | GET `(JWTOKEN)`    | Case to be Accessed by Client   | 200
| api/cases/{caseId}     | GET `(ATTORNEY)`    | Case to be Accessed by Attorney   | 200
| api/cases/{casesId}     | PUT `(ATTORNEY)`     | Case Create by Attorney   | 200


| Allegations | Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/allegations     | Default     | Initial Route     | 
| api/cases/{caseId}/allegations     | POST     | Create Allegation to Case     | 200
| api/cases/{caseId}/allegations/{allegationId}     | PUT     | Update Allegation from Case    | 200
| api/allegations/{allegationId}    | DELETE     | Delete Allegation  from Case    | 200
| api/cases/{caseId}/allegations     | GET     | Fetch Allegation details     | 200


| Evidences | Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/cases/allegations/{allegationId}/evidences    | POST     | Create Evidence to Allegation     | 
| api/cases/evidences/{evidencesId}     | PUT     | Update Evidence from Allegation    | 200
| api/allegations/{allegationId}/evidences/{evidencesId}     | DELETE     | Delete Eveidence from Allegation     | 200
| api/allegations/{allegationId}/evidences/{evidenceId}/activate     | POST (`CLIENT | ATTORNEY`)      | Activate Evidence to Allegation     | 200
| api/evidences/{evidenceId}/files/{fileId}     | GET (`CLIENT | ATTORNEY`)      | Activate Fetch Evidence(Image/Video) to be Displayed   | 200
| api/evidences/{evidenceId}/tag    | PUT (`CLIENT | ATTORNEY`)      | Notify Client/Attorney for the Evidence | 200


| Hearing Dates| Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/hearing-dates    | Default     | Initial Route     | 200
| api/hearing-dates/{hearingDateId}   | DELETE (`ATTORNEY`)     | Delete Hearing date     | 200
| api/cases/{caseId}/hearing-dates   | GET(`ATTORNEY`)     | Fetch Hearing Date    | 200
| api/cases/{caseId}/hearing-dates   | POST(`ATTORNEY`)     | Create Hearing Date    | 200


| Client| Methods | Functions | Response
| -------- | -------- | -------- | -------- |
| api/cases/{caseId}/clients/{clientId}/resend-invitation    | POST(`ATTORNEY`)     | Send Email for Access to Client     | 200
| api/cases/{caseId}/clients/{clientId}/mark-timeline-visited  | PUT (`CLIENT`)     | Track Client upon visiting case    | 200



# How it works

## I. Creating of Cases
  1. Attorney creates a cases fill up the fields
  2. Then adding of Case members (clients)
      - Note: The added member will receive an email from the system, allowing them to access and add case allegation/evidences  
  3. Adding of hearing dates;
     a. Click the date
     b. Click the Add hearing date button
  4. Then Save Case
  
>  Screenshot
>  ![](https://i.imgur.com/NfBacUr.png)

## II. Adding Allegation to Case
  1. Open Cases
  2. Click Add Allegation Button
  3. Modal will show
  4. Fill up the fields
  5. Then save
>  Screenshot
>  ![](https://i.imgur.com/50rYKCV.png)

## III. Adding of Evidence to Allegation
  1. Open Cases
  2. Click Attach Evidence
  3. Modal will show
  4. Select Allegation to point the evidence
  5. Fill up the details
       a. Image - will be stored as blob
       b. Video - will be uploaded to a video encoding api (Coconut.co) then returns the video link.
  6. Links will only be save in the database

>  Screenshot
>  ![](https://i.imgur.com/eqzvJCo.png)

