fix: edit custom view details.

This commit is contained in:
Ahmed Bouhuolia
2020-10-17 18:12:15 +02:00
parent ebcd1d12f3
commit 078098c593
12 changed files with 97 additions and 47 deletions

View File

@@ -15,15 +15,6 @@ export default class AccountsTypesService implements IAccountsTypesService{
*/
async getAccountsTypes(tenantId: number): Promise<IAccountType> {
const { accountTypeRepository } = this.tenancy.repositories(tenantId);
const { AccountType } = this.tenancy.models(tenantId);
const { __ } = this.tenancy.i18n(tenantId);
const allAccountsTypes = await accountTypeRepository.all();
return allAccountsTypes.map((_accountType: IAccountType) => ({
id: _accountType.id,
label: __(AccountType.labels[_accountType.key]),
...omit(_accountType, ['id']),
}));
return accountTypeRepository.all();
}
}

View File

@@ -11,6 +11,7 @@ import {
IItemCategoriesService,
IItemCategoriesFilter,
ISystemUser,
IFilterMeta,
} from "interfaces";
import DynamicListingService from 'services/DynamicListing/DynamicListService';
import TenancyService from 'services/Tenancy/TenancyService';
@@ -245,7 +246,11 @@ export default class ItemCategoriesService implements IItemCategoriesService {
* @param {number} tenantId
* @param filter
*/
public async getItemCategoriesList(tenantId: number, filter: IItemCategoriesFilter, authorizedUser: ISystemUser) {
public async getItemCategoriesList(
tenantId: number,
filter: IItemCategoriesFilter,
authorizedUser: ISystemUser
): Promise<{ itemCategories: IItemCategory[], filterMeta: IFilterMeta }> {
const { ItemCategory } = this.tenancy.models(tenantId);
const dynamicList = await this.dynamicListService.dynamicList(tenantId, ItemCategory, filter);

View File

@@ -165,7 +165,7 @@ export default class ViewsService implements IViewsService {
* - Store view roles/conditions to the storage.
* ---------
* @param {number} tenantId - Tenant id.
* @param {IViewDTO} viewDTO - View DTO.
* @param {IViewDTO} viewDTO - New view DTO.
*
* @return {Promise<IView>}
*/
@@ -195,7 +195,7 @@ export default class ViewsService implements IViewsService {
predefined: false,
name: viewDTO.name,
rolesLogicExpression: viewDTO.logicExpression,
resourceModel: viewDTO.resourceModel,
resourceModel: ResourceModel.name,
roles: viewDTO.roles,
columns: viewDTO.columns,
});
@@ -215,22 +215,23 @@ export default class ViewsService implements IViewsService {
* - Delete old view columns and roles.
* - Re-save view columns and roles.
*
* @param {number} tenantId
* @param {number} viewId
* @param {IViewEditDTO}
* @param {number} tenantId -
* @param {number} viewId -
* @param {IViewEditDTO} viewEditDTO -
* @return {Promise<IView>}
*/
public async editView(tenantId: number, viewId: number, viewEditDTO: IViewEditDTO): Promise<void> {
public async editView(tenantId: number, viewId: number, viewEditDTO: IViewEditDTO): Promise<IView> {
const { viewRepository } = this.tenancy.repositories(tenantId);
this.logger.info('[view] trying to edit custom view.', { tenantId, viewId });
// Retrieve view details or throw not found error.
const view = await this.getViewOrThrowError(tenantId, viewId);
const oldView = await this.getViewOrThrowError(tenantId, viewId);
// Validate the resource name is exists and resourcable.
const ResourceModel = this.getResourceModelOrThrowError(tenantId, view.resourceModel);
const ResourceModel = this.getResourceModelOrThrowError(tenantId, oldView.resourceModel);
// Validate view name uniquiness.
await this.validateViewNameUniquiness(tenantId, view.resourceModel, viewEditDTO.name, viewId);
await this.validateViewNameUniquiness(tenantId, oldView.resourceModel, viewEditDTO.name, viewId);
// Validate the given fields keys exist on the storage.
this.validateResourceRolesFieldsExistance(ResourceModel, viewEditDTO.roles);
@@ -243,7 +244,8 @@ export default class ViewsService implements IViewsService {
throw new ServiceError(ERRORS.LOGIC_EXPRESSION_INVALID);
}
// Update view details.
await viewRepository.update(tenantId, viewId, {
this.logger.info('[views] trying to update view details.', { tenantId, viewId });
const view = await viewRepository.update(viewId, {
predefined: false,
name: viewEditDTO.name,
rolesLogicExpression: viewEditDTO.logicExpression,
@@ -251,6 +253,8 @@ export default class ViewsService implements IViewsService {
columns: viewEditDTO.columns,
})
this.logger.info('[view] edited successfully.', { tenantId, viewId });
return view;
}
/**