Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
dccaa93
[BI-2304] - updated getEntryNumber
mlm483 Sep 10, 2024
5d23751
[BI-2129] - Accessibility: Germplasm Table Fixes
HMS17 Sep 11, 2024
048c7b4
Merge pull request #401 from Breeding-Insight/feature/BI-2129
HMS17 Sep 18, 2024
8cb792c
[autocommit] bumping build number
rob-ouser-bi Sep 18, 2024
a93cabe
[BI-2255] seperated 'editable' logic (based on user-rights) and 'curr…
davedrp Sep 11, 2024
37e3221
[BI-2255] Fixed bug - When adding new trait, got bad error message
davedrp Sep 16, 2024
4874a82
Merge pull request #402 from Breeding-Insight/bug/BI-2255_3
davedrp Sep 19, 2024
d1dd7bf
[autocommit] bumping build number
rob-ouser-bi Sep 19, 2024
926c4b0
[BI-2224] Show 'New Observations', 'Existing Observatins', and 'Mutat…
davedrp Sep 11, 2024
4952053
[BI-2224] WIP
davedrp Sep 16, 2024
204d647
[BI-2224] Used the isExisting() method to determine workflow
davedrp Sep 16, 2024
45136fb
[BI-2224] Changed wording from 'Mutated' to 'Overwritten'
davedrp Sep 19, 2024
2da22c4
Merge pull request #403 from Breeding-Insight/feature/BI-2224
davedrp Sep 23, 2024
c95aa42
[autocommit] bumping build number
rob-ouser-bi Sep 23, 2024
91a06b8
Merge branch 'develop' into feature/BI-2304
mlm483 Sep 23, 2024
0b642ec
[BI-1933] - fixed duplicate API call
mlm483 Sep 25, 2024
22ee565
[BI-1933] - reset loading flag in fetch function
mlm483 Oct 1, 2024
c4382c0
[BI-1933] - added paginationCall to mounted()
mlm483 Oct 1, 2024
4598b7f
[BI-1933] - updated tables that use pagination controller
mlm483 Oct 2, 2024
51aeadb
[BI-1933] - fixed pagination bug
mlm483 Oct 2, 2024
823fd80
Merge pull request #399 from Breeding-Insight/feature/BI-2304
mlm483 Oct 7, 2024
c76a138
[autocommit] bumping build number
rob-ouser-bi Oct 7, 2024
4c8f14f
Update version
nickpalladino Oct 7, 2024
2f38392
[autocommit] bumping build number
rob-ouser-bi Oct 7, 2024
eba1782
Merge branch 'develop' into bug/BI-1933
mlm483 Oct 8, 2024
f465031
[BI-1933] - tweaked TraitsImportTable.vue
mlm483 Oct 8, 2024
5f4732b
Merge pull request #404 from Breeding-Insight/bug/BI-1933
mlm483 Oct 8, 2024
5fe64ac
[autocommit] bumping build number
rob-ouser-bi Oct 8, 2024
e7cd686
Update pull_request_template.md
sb2597 Nov 4, 2024
ab06e6a
[autocommit] bumping build number
rob-ouser-bi Nov 4, 2024
d0751f6
Merge branch 'develop' into release/1.0-develop
mlm483 Nov 8, 2024
c0b1aa3
[autocommit] bumping build number
rob-ouser-bi Nov 8, 2024
0f65a87
Merge pull request #416 from Breeding-Insight/release/1.0-develop
mlm483 Nov 8, 2024
515f202
[autocommit] bumping build number
rob-ouser-bi Nov 8, 2024
2ba9da2
[BI-2342] observation filter is now case insensitive
davedrp Nov 7, 2024
55e8983
Merge pull request #415 from Breeding-Insight/bug/BI-2342
davedrp Nov 11, 2024
8ac74be
[autocommit] bumping build number
rob-ouser-bi Nov 11, 2024
ab2a531
[BI-2343] - GID filtering not informative
HMS17 Nov 15, 2024
3129f1a
Merge pull request #418 from Breeding-Insight/bug/BI-2343
HMS17 Nov 27, 2024
5dcd1a9
[autocommit] bumping build number
rob-ouser-bi Nov 27, 2024
f6bc13a
[BI-2124] default germplame lists to creation date order (newest on top)
davedrp Nov 21, 2024
c271ee7
Merge pull request #419 from Breeding-Insight/feature/BI-2124
davedrp Dec 13, 2024
cd731f1
[autocommit] bumping build number
rob-ouser-bi Dec 13, 2024
c650f58
get submission details after update
dmeidlin Nov 6, 2024
92f4879
fetch sample details
dmeidlin Nov 7, 2024
a1ecca7
update package-lock.json
dmeidlin Dec 10, 2024
749ec7a
Merge pull request #414 from Breeding-Insight/bug/BI-2363
dmeidlin Dec 20, 2024
ce2cc0e
[autocommit] bumping build number
rob-ouser-bi Dec 20, 2024
7908fc2
[BI-2425] - enabled sub-entity menu option
mlm483 Jan 2, 2025
c7125bf
Merge pull request #421 from Breeding-Insight/task/BI-2425
mlm483 Jan 2, 2025
e01424a
[autocommit] bumping build number
rob-ouser-bi Jan 2, 2025
4ca8541
[BI-2426] - disabled sub-entity menu option
mlm483 Jan 2, 2025
28d86ba
add delete option to germplasm list management
dmeidlin Nov 15, 2024
a18760e
add access control for list delete menu option
dmeidlin Nov 15, 2024
2a6d70f
get germplasm list records via germplasm endpoints
dmeidlin Nov 18, 2024
c49c3d8
revert to germplasm endpoints
dmeidlin Nov 20, 2024
a3297b8
fix listType query param for lists call
dmeidlin Dec 18, 2024
0560511
incorporate PR feedback
dmeidlin Dec 20, 2024
2bd27e7
upadte package-lock.json
dmeidlin Jan 10, 2025
79e1aa9
Merge pull request #420 from Breeding-Insight/feature/BI-2373
dmeidlin Jan 10, 2025
aa61e4b
[autocommit] bumping build number
rob-ouser-bi Jan 10, 2025
89865d9
[BI-2437]fixed bug
davedrp Jan 15, 2025
5b679f5
Merge pull request #424 from Breeding-Insight/bug/BI-2437
davedrp Jan 17, 2025
b2083d0
[autocommit] bumping build number
rob-ouser-bi Jan 17, 2025
dc0bd3a
WIP
davedrp Dec 13, 2024
c109ce6
WIP
davedrp Dec 13, 2024
cf3bff8
[BI-2377] WIP
davedrp Dec 19, 2024
b7b655b
[BI-2377] WIP
davedrp Dec 19, 2024
c6c0975
[BI-2377] clean up code
davedrp Jan 9, 2025
99f5093
[BI-2377] fixed bug introduced by merge.
davedrp Jan 9, 2025
8ef642c
[BI-2277] Clean-up code. Respond to PR coments
davedrp Jan 13, 2025
510d50e
[BI-2377] fix accessibility issue
davedrp Jan 15, 2025
a3d8884
[BI-2377] fix bug
davedrp Jan 15, 2025
a4fdc69
[BI-2377] shows success notification
davedrp Jan 16, 2025
1e9d449
Merge pull request #423 from Breeding-Insight/feature/BI-2377
davedrp Jan 22, 2025
15d4780
[autocommit] bumping build number
rob-ouser-bi Jan 22, 2025
321b82e
Work in progress
nickpalladino Jan 31, 2025
7360fb7
Added error handling
nickpalladino Feb 3, 2025
e9583a3
[BI-2449] - Correct Exp Preview Summary Stats
HMS17 Feb 4, 2025
7a6766a
Updated delete menu item based on demo feedback
nickpalladino Feb 5, 2025
ea7a7a9
Merge pull request #426 from Breeding-Insight/feature/BI-2449
HMS17 Feb 10, 2025
44c31b1
[autocommit] bumping build number
rob-ouser-bi Feb 10, 2025
7981875
Added delete permission for program admin
nickpalladino Feb 10, 2025
457c4f7
Fixed console errors and display success banner on success
nickpalladino Feb 11, 2025
b2101cd
Removed unused modal component
nickpalladino Feb 11, 2025
0f27102
Removed unused import
nickpalladino Feb 11, 2025
9aafcb1
Removed unused import
nickpalladino Feb 11, 2025
6b09aa0
Don't show success notification on 500 error
nickpalladino Feb 12, 2025
60b4b9e
Removed old unused code
nickpalladino Feb 13, 2025
e6962b3
Merge branch 'develop' into feature/BI-2380
nickpalladino Feb 13, 2025
b083834
Merge pull request #425 from Breeding-Insight/feature/BI-2380
nickpalladino Feb 13, 2025
e519001
[autocommit] bumping build number
rob-ouser-bi Feb 13, 2025
ae3df31
WIP
davedrp Feb 4, 2025
bfa1700
[BI-2496] resond to HTTP-Status code
davedrp Feb 6, 2025
8bbddf3
Merge pull request #427 from Breeding-Insight/bug/BI-2496
davedrp Feb 17, 2025
6c03d4e
[autocommit] bumping build number
rob-ouser-bi Feb 17, 2025
b95285c
[BI-2449-fix] - Correct Exp Preview Summary Stats, QA fix
HMS17 Feb 17, 2025
47cf726
[BI-2449-fix] - Correct Exp Preview Summary Stats, preview stat mod
HMS17 Feb 19, 2025
b12591f
Merge pull request #428 from Breeding-Insight/feature/BI-2449-fix
HMS17 Feb 19, 2025
51879f1
[autocommit] bumping build number
rob-ouser-bi Feb 19, 2025
3f9fded
Merge branch 'develop' into task/BI-2426
mlm483 Feb 25, 2025
67f9217
Merge pull request #422 from Breeding-Insight/task/BI-2426
mlm483 Feb 26, 2025
2eceff9
[autocommit] bumping build number
rob-ouser-bi Feb 26, 2025
796538d
[BI-2140] Accessibility: Home Page
davedrp Feb 25, 2025
1f11389
Merge pull request #430 from Breeding-Insight/feature/BI-2140
davedrp Mar 3, 2025
5fb835f
[autocommit] bumping build number
rob-ouser-bi Mar 3, 2025
8c31007
[BI-2555] - fixed unexpected default sort
mlm483 Mar 14, 2025
6a816e6
[BI-2555] - implemented an alternative approach
mlm483 Mar 18, 2025
9d0818a
[BI-2555] - refactored
mlm483 Mar 19, 2025
b90bfe8
[BI-2555] - removed unused import
mlm483 Mar 21, 2025
557d619
[BI-2574] - updated import template links
mlm483 Mar 24, 2025
58ea2ca
Merge pull request #431 from Breeding-Insight/bug/BI-2555
mlm483 Mar 26, 2025
8ffdd88
[autocommit] bumping build number
rob-ouser-bi Mar 26, 2025
2c817d2
Merge branch 'develop' into task/BI-2574
mlm483 Mar 26, 2025
a4a854e
Merge pull request #432 from Breeding-Insight/task/BI-2574
mlm483 Mar 31, 2025
e472b4b
[autocommit] bumping build number
rob-ouser-bi Mar 31, 2025
6e1fe04
[BI-2589] fixed bug: pageSize, and currentPage were not being correc…
davedrp Apr 3, 2025
4a0d663
Merge pull request #433 from Breeding-Insight/bug/BI-2589
davedrp Apr 4, 2025
87ec975
[autocommit] bumping build number
rob-ouser-bi Apr 4, 2025
8bdcfb3
[autocommit] bumping build number
rob-ouser-bi Apr 7, 2025
fbdae42
Update version
nickpalladino Apr 8, 2025
040472f
Merge branch 'release/1.1' of https://github.com/Breeding-Insight/bi-…
nickpalladino Apr 8, 2025
03e4b89
[autocommit] bumping build number
rob-ouser-bi Apr 8, 2025
2e2af51
[BI-2124] Set init sort order
davedrp Apr 14, 2025
12be227
Merge pull request #435 from Breeding-Insight/feature/BI-2124_2
davedrp Apr 21, 2025
459a75b
[autocommit] bumping build number
rob-ouser-bi Apr 21, 2025
63123ad
[BI-2618] - pin sort-package-json to 3.0.0
mlm483 Apr 30, 2025
81d94e7
Merge pull request #438 from Breeding-Insight/bug/BI-2618
mlm483 Apr 30, 2025
90685f9
[autocommit] bumping build number
rob-ouser-bi Apr 30, 2025
939aade
Merge branch 'main' into release/1.1-main
mlm483 Apr 30, 2025
b8dd020
[autocommit] bumping build number
rob-ouser-bi Apr 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,4 @@ _Please include any details needed for reviewers to test this code_
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to documentation
- [ ] I have run TAF: _\<link to TAF run>_
- [ ] I have run SiteImprove on pages impacted by changes
46 changes: 29 additions & 17 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bi-web",
"version": "v1.0.0",
"version": "v1.1.0+832",
"private": true,
"scripts": {
"build": "node $npm_package_config_task_path/build.js --dev-audit-level=critical --prod-audit-level=none",
Expand Down Expand Up @@ -96,5 +96,5 @@
"vue-cli-plugin-axios": "0.0.4",
"vue-template-compiler": "^2.7.14"
},
"versionInfo": "https://github.com/Breeding-Insight/bi-web/releases/tag/v1.0.0"
"versionInfo": "https://github.com/Breeding-Insight/bi-web/commit/939aade34a7566e58dfaeb3896904c6e897c764c"
}
2 changes: 1 addition & 1 deletion src/assets/scss/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -945,7 +945,7 @@ tr:nth-child(odd) td.db-filled {
margin-right: 10px;
}

.sub-entity-dataset-modal, .experiment-observations-download-button, .experiment-observation-add-collaborator-button, .experiment-observation-remove-collaborator-button {
.sub-entity-dataset-modal, .experiment-observations-download-button, .experiment-observation-add-collaborator-button, .experiment-observation-remove-collaborator-button, .germplasm-list-deletion-button {
.modal {
.modal-card {
width: $medium-modal-content-width;
Expand Down
23 changes: 23 additions & 0 deletions src/breeding-insight/dao/ExperimentDAO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,29 @@ export class ExperimentDAO {
}
}


static async deleteExperiment(programId: string, experimentId: string, softDelete: boolean): Promise<Result<Error, boolean>> {
const config: any = {};
config.url = `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/experiments/${experimentId}`;
config.method = 'delete';
config.programId = programId;
config.experimentId = experimentId;
config.params = {
hard : ! softDelete,
};
try {
const response = await api.call(config);
// Check if the status code indicates success
if (response.status >= 200 && response.status < 300) {
return ResultGenerator.success(true);
} else {
throw new Error(`Unexpected status code: ${response.status}`);
}
} catch (error) {
return ResultGenerator.err(error);
}
}

static async getDatasetMetadata(programId: string, experimentId: string): Promise<Result<Error, DatasetMetadata[]>> {
const config: any = {};
config.url = `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/experiments/${experimentId}/datasets`;
Expand Down
2 changes: 1 addition & 1 deletion src/breeding-insight/dao/GermplasmDAO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export class GermplasmDAO {
config.url = `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/brapi/v2/lists`;
config.method = 'get';
config.programId = programId;
config.params = {listType: ListType.Germplasm};
config.params = {listType: ListType.GERMPLASM};
if (paginationQuery.page) config.params.page = paginationQuery.page - 1;
if (paginationQuery.pageSize) config.params.pageSize = paginationQuery.pageSize;

Expand Down
14 changes: 14 additions & 0 deletions src/breeding-insight/dao/SampleSubmissionDAO.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,20 @@ export class SampleSubmissionDAO {
}
}

static async deleteSubmission(programId: string, submissionId: string): Promise<Result<Error, Void>> {
const config: any = {};
config.url = `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/submissions/${submissionId}`;
config.method = 'delete';
config.programId = programId;
config.submissionId = submissionId;
try {
await api.call(config);
return ResultGenerator.success();
} catch (error) {
return ResultGenerator.err(error);
}
}

static async submitToDArT(programId: string, submissionId: string): Promise<Result<Error, VendorOrderSubmission>> {
const config: any = {};
config.url = `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/submissions/${submissionId}/submit?vendor=dart`;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@
import {GermplasmSortField} from "@/breeding-insight/model/Sort";
import {BaseFilter} from "@/breeding-insight/model/BaseFilter";

export enum GermplasmBIField {
export enum ListBIField {
ListDbId = "listDbId",
ListName = "listName",
}

export class GermplasmFilter extends BaseFilter {
[GermplasmBIField.ListDbId]: string;
[GermplasmBIField.ListName]: string;
export class ListFilter extends BaseFilter {
[ListBIField.ListDbId]: string;
[ListBIField.ListName]: string;
}

export class GermplasmFilter extends ListFilter {
[GermplasmSortField.AccessionNumber]: string;
[GermplasmSortField.DefaultDisplayName]: string;
[GermplasmSortField.BreedingMethod]: string;
Expand Down
10 changes: 10 additions & 0 deletions src/breeding-insight/service/ExperimentService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,14 @@ export class ExperimentService {
}
return await ExperimentDAO.deleteCollaborator(programId, experimentId, id);
}

static async deleteExperiment(programId: string | undefined, experimentId: string, hasObsUnits: boolean): Promise<Result<Error, boolean>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
let response: Result<Error, boolean>;
response = await ExperimentDAO.deleteExperiment(programId, experimentId, hasObsUnits);
if(response.isErr()) throw response.value;
return response;
}
}
9 changes: 5 additions & 4 deletions src/breeding-insight/service/GermplasmService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import {Germplasm} from "@/breeding-insight/brapi/model/germplasm";
import {Result, ResultGenerator} from "@/breeding-insight/model/Result";
import {SortOrder} from "@/breeding-insight/model/Sort";
import * as api from "@/util/api";
import {GermplasmFilter} from "@/breeding-insight/model/GermplasmFilter";
import {GermplasmFilter} from "@/breeding-insight/model/ListFilter";


export class GermplasmService {

Expand All @@ -34,7 +35,7 @@ export class GermplasmService {
{ listDbId, listName, ...brapiFilters }: GermplasmFilter):
Promise<BiResponse> {
//Form the query params including sorting, pagination, and filtering
let params: any = { ...brapiFilters };
let params: any = {listDbId: listDbId, ...brapiFilters };

if (sort.field) {
params['sortField'] = sort.field;
Expand Down Expand Up @@ -67,8 +68,8 @@ export class GermplasmService {
}

//Get the list germplasm
const {data} = await api.call({
url: `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/germplasm/lists/${listId}/records`,
const {data}: any = await api.call({
url: `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/brapi/v2/germplasm`,
method: 'get',
params: params
}) as Response;
Expand Down
93 changes: 93 additions & 0 deletions src/breeding-insight/service/ListService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/*
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import {BiResponse} from "@/breeding-insight/model/BiResponse";
import {SortOrder} from "@/breeding-insight/model/Sort";
import * as api from "@/util/api";
import {ListType} from "@/util/ListType";

export class ListService {
static async deleteList(programId: string | undefined, listDbId: string) {
if (programId == undefined) {
throw new Error("Not valid program");
}
try {
const response = await api.call({
url: `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/brapi/v2/lists/${listDbId}`,
method: 'delete',
params: { hardDelete: true }
}) as Response;

// If we get here, it means the call was successful (likely 200 OK)
return new BiResponse({ success: true });

} catch (error) {
// Check if the error is actually a 204 No Content response since http clients can be configured to
// automatically throw an error if the response has no content
if (error.response && error.response.status === 204) {
// This is actually a successful deletion
return new BiResponse({ success: true });
}

// For other errors, log and rethrow
console.error('Error in deleteList:', error);
throw error;
}
}

static async getLists<T>(listType: ListType,
programId: string,
sort: { field: T, order: SortOrder },
pagination: {pageSize: number, page: number},
filters?: any): Promise<BiResponse> {
if (!programId) throw 'Program ID required';

// Set list type, sort, and pagination
let params: any = { listType };

if(filters) {
params = { listType, ...filters };
}

if (sort.field) {
params['sortField'] = sort.field;
}
if (sort.order) {
params['sortOrder'] = sort.order;
}
if (pagination.page || pagination.page == 0) { //have to account for 0-index pagination since 0 falsy
params['page'] = pagination.page;
}
if (pagination.pageSize) {
params['pageSize'] = pagination.pageSize;
}

// Make the GET call
try {
const { data }: any = await api.call({
url: `${process.env.VUE_APP_BI_API_V1_PATH}/programs/${programId}/brapi/v2/lists`,
method: 'get',
params: params
});

return new BiResponse(data);

} catch (error) {
throw error;
}
}
}
36 changes: 21 additions & 15 deletions src/breeding-insight/service/SampleSubmissionService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,24 +61,30 @@ export class SampleSubmissionService {
return await SampleSubmissionDAO.getSubmissionById(programId, submissionId, true);
}

static async submitToDArT(programId: string, submissionId: string): Promise<Result<Error, VendorOrderSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.submitToDArT(programId, submissionId);
static async submitToDArT(programId: string, submissionId: string): Promise<Result<Error, VendorOrderSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.submitToDArT(programId, submissionId);
}

static async checkVendorStatus(programId: string, submissionId: string): Promise<Result<Error, SampleSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.checkVendorStatus(programId, submissionId);
static async checkVendorStatus(programId: string, submissionId: string): Promise<Result<Error, SampleSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.checkVendorStatus(programId, submissionId);
}

static async updateSubmissionStatus(programId: string, submissionId: string, status: string): Promise<Result<Error, SampleSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.updateSubmissionStatus(programId, submissionId, status);
static async updateSubmissionStatus(programId: string, submissionId: string, status: string): Promise<Result<Error, SampleSubmission>> {
if (!programId) {
return ResultGenerator.err(new Error('Missing or invalid program id'));
}
return await SampleSubmissionDAO.updateSubmissionStatus(programId, submissionId, status);
}

static async deleteSubmission(programId: string, submissionId: string) : Promise<Result<Error, Void>> {
return await SampleSubmissionDAO.deleteSubmission(programId, submissionId);
}


}
Loading