# ASR-335 Saved search - change history - Technical Refinement
#### APPEALS-45662 - Create SavedSearch model
###### SavedSearch model:
- `saved_search: belong_to a user`
- `user: has_many: saved_searches`
- `saved_search :validation: limit saved_searches to 10 per user`
###### SavedSearch Migration:
Columns:
- `search_name: String`
- `search_description: String`
- `user_id: int`
- `saved_search: jsonB`
- e.g
```
{
search_name: "Search name"
search_description: "This search fillters ..."
user_id: 12
saved_search: {
report_type: ["Event/Action", "Status"],
status_report_type: ["Last Action Taken", "Summary"],
events: {0: "added_issue", 1: "claim_created", 2: "claim_closed", 3: "claim_status_inprogress", 4: "added_decision_date", 5: "added_issue_no_decision_date", 6: "claim_status_incomplete", 7: "completed_disposition", 8: "removed_issue", 9: "withdrew_issue"},
timing: {"range"=>"after", "start_date"=>"2024-04-30T05:00:00.000Z"},
statuses: ["Incomplete", "In Progress", "Completed", "Cancelled"],
days_waiting: { comparison_operator: "moreThan", value_one:"23"},
decision_review_type: ["Higher-Level Reviews", "Supplemental Claims"],
issue_type: { 0: "Beneficiary Travel" },
issue_disposition: ["Dismissed", "Blank", "Denied", "DTA Error", "Granted", "withdrawn"],
personnel: {},
facility: { "101":"VACO" }
}
```
#### APPEALS-45663 Create SavedSearch seed data/factories
- New file `db/seeds/vha_saved_search.rb`
- create 10 seaved searchs per 10 users
#### APPEALS-45664 Creation of Saved Search controller
- Create SavedSearchController
* SavedSearch object
```
{
id: integer
search_name: String
search_description: String
user_id: int
saved_search: jsonB
created_at: datetime(iso 8601)
updated_at: datetime(iso 8601)
}
```
----
#### * POST /users/:user_id/saved_searches
Creates a new Saved Search, that belongs to a user and returns 200 success.
* **URL Params**
*Required:* `user_id=[integer]`
* **Headers**
Content-Type: application/json
* **Data Params**
```
{
search_name: String
search_description: String
saved_search: jsonB
}
```
* **Success Response:**
* **Code:** 204 No Content
**Content:** `{ "Success creating message" }`
* **Error Response:**
* **Code:** 404
**Content:** `{ error : " User has more than 10 Saved Searchs saved" }`
----
#### * DELETE /users/:user_id/saved_searches/:id**
Deletes the specified saved_searches.
* **URL Params**
*Required:* `id=[integer]`
*Required:* `user_id=[integer]`
* **Data Params**
None
* **Headers**
Content-Type: application/json
Authorization: Bearer `<OAuth Token>`
* **Success Response:**
* **Code:** 204 No Content
* **Error Response:**
* **Code:** 404
**Content:** `{ error : "Saved Searches doesn't exist" }`
OR
* **Code:** 401
**Content:** `{ error : error : "You are unauthorized to make this request." }`
----
#### * GET /saved_searches
Returns all SavedSearches in the system.
* **URL Params**
None
* **Data Params**
None
* **Headers**
Content-Type: application/json
* **Success Response:**
* **Code:** 200
**Content:**
```
{
SavedSearches: [
{<saved_search_object>},
{<saved_search_object>},
{<saved_search_object>}
]
}
```
----
#### * GET /users/:id/saved_searches**
Returns all Saved Searches associated with the specified User.
* **URL Params**
*Required:* `id=[integer]`
* **Data Params**
None
* **Headers**
Content-Type: application/json
Authorization: Bearer `<OAuth Token>`
* **Success Response:**
* **Code:** 200
```{
count: 3, # Sum of saved serach per user ?
saved_searches: [
{<...saved_search_object},
{<...saved_search_object>},
{<...saved_search_object>}
]
}
```
* **Error Response:**
* **Code:** 404
**Content:** `{ error : "user doesn't exist" }`
OR
* **Code:** 401
**Content:** `{ error : error : "You are unauthorized to make this request." }`
#### APPEALS-45336 Creation of Saved Searches page and ‘View saved searches’ button on Generate task report page
#### APPEALS-45665 Creation of Saved Searches table on Saved Searches page Story
#### APPEALS-45666 Populate tabs on Saved Searches page
#### APPEALS-45667 Creation of ‘Delete’ button on Saved Searches page Story
#### APPEALS-45668 Creation of ‘Apply’ button on Saved Searches page Story
#### APPEALS-45669 Creation of ‘Save search’ button on Generate task report page
#### APPEALS-45670 Creation of ‘Save your search’ modal
#### APPEALS-45671 Creation of ‘Limit Reached’ modal
#### APPEALS-45672 Creation of ‘Delete search’ modal on Saved Searches page – My saved search tab