This commit is contained in:
David Arranz 2024-09-17 14:39:13 +02:00
parent 738da90b23
commit 7293385550
4 changed files with 28 additions and 56 deletions

View File

@ -58,8 +58,14 @@ export const QuoteDetailsCardEditor = ({
id: "description" as const,
accessorKey: "description",
header: t("quotes.form_fields.items.description.label"),
cell: ({ row: { index } }) => {
return <FormTextAreaField autoSize {...register(`items.${index}.description`)} />;
cell: ({ row: { index, original } }) => {
return (
<FormTextAreaField
readOnly={original?.id_article}
autoSize
{...register(`items.${index}.description`)}
/>
);
},
size: 500,
},

View File

@ -1,18 +1,10 @@
import {
IUseCase,
IUseCaseError,
UseCaseError,
} from "@/contexts/common/application/useCases";
import { IUseCase, IUseCaseError, UseCaseError } from "@/contexts/common/application/useCases";
import { IRepositoryManager } from "@/contexts/common/domain";
import {
Collection,
ICollection,
IQueryCriteria,
Result,
} from "@shared/contexts";
import { Collection, ICollection, IQueryCriteria, Result } from "@shared/contexts";
import { IInfrastructureError } from "@/contexts/common/infrastructure";
import { ISequelizeAdapter } from "@/contexts/common/infrastructure/sequelize";
import { logger } from "@/infrastructure/logger";
import { Article, ICatalogRepository } from "../domain";
export interface IListArticlesParams {
@ -29,10 +21,7 @@ export class ListArticlesUseCase
private _adapter: ISequelizeAdapter;
private _repositoryManager: IRepositoryManager;
constructor(props: {
adapter: ISequelizeAdapter;
repositoryManager: IRepositoryManager;
}) {
constructor(props: { adapter: ISequelizeAdapter; repositoryManager: IRepositoryManager }) {
this._adapter = props.adapter;
this._repositoryManager = props.repositoryManager;
}
@ -41,9 +30,7 @@ export class ListArticlesUseCase
return this._repositoryManager.getRepository<T>(name);
}
async execute(
params: Partial<IListArticlesParams>,
): Promise<ListArticlesResult> {
async execute(params: Partial<IListArticlesParams>): Promise<ListArticlesResult> {
const { queryCriteria } = params;
return this.findArticles(queryCriteria);
@ -51,26 +38,20 @@ export class ListArticlesUseCase
private async findArticles(queryCriteria) {
const transaction = this._adapter.startTransaction();
const productRepoBuilder =
this.getRepositoryByName<ICatalogRepository>("Article");
const productRepoBuilder = this.getRepositoryByName<ICatalogRepository>("Article");
let products: ICollection<Article> = new Collection();
try {
await transaction.complete(async (t) => {
products = await productRepoBuilder({ transaction: t }).findAll(
queryCriteria,
);
products = await productRepoBuilder({ transaction: t }).findAll(queryCriteria);
});
return Result.ok(products);
} catch (error: unknown) {
const _error = error as IInfrastructureError;
logger().error(_error);
return Result.fail(
UseCaseError.create(
UseCaseError.REPOSITORY_ERROR,
"Error al listar el catálogo",
_error,
),
UseCaseError.create(UseCaseError.REPOSITORY_ERROR, "Error al listar el catálogo", _error)
);
}
}

View File

@ -1,15 +1,6 @@
import {
IUseCase,
IUseCaseError,
UseCaseError,
} from "@/contexts/common/application/useCases";
import { IUseCase, IUseCaseError, UseCaseError } from "@/contexts/common/application/useCases";
import { IRepositoryManager } from "@/contexts/common/domain";
import {
Collection,
ICollection,
IQueryCriteria,
Result,
} from "@shared/contexts";
import { Collection, ICollection, IQueryCriteria, Result } from "@shared/contexts";
import { IInfrastructureError } from "@/contexts/common/infrastructure";
import { ISequelizeAdapter } from "@/contexts/common/infrastructure/sequelize";
@ -24,16 +15,11 @@ export type ListUsersResult =
| Result<never, IUseCaseError> // Misc errors (value objects)
| Result<ICollection<User>, never>; // Success!
export class ListUsersUseCase
implements IUseCase<IListUsersParams, Promise<ListUsersResult>>
{
export class ListUsersUseCase implements IUseCase<IListUsersParams, Promise<ListUsersResult>> {
private _adapter: ISequelizeAdapter;
private _repositoryManager: IRepositoryManager;
constructor(props: {
adapter: ISequelizeAdapter;
repositoryManager: IRepositoryManager;
}) {
constructor(props: { adapter: ISequelizeAdapter; repositoryManager: IRepositoryManager }) {
this._adapter = props.adapter;
this._repositoryManager = props.repositoryManager;
}
@ -56,19 +42,13 @@ export class ListUsersUseCase
try {
await transaction.complete(async (t) => {
users = await userRepoBuilder({ transaction: t }).findAll(
queryCriteria,
);
users = await userRepoBuilder({ transaction: t }).findAll(queryCriteria);
});
return Result.ok(users);
} catch (error: unknown) {
const _error = error as IInfrastructureError;
return Result.fail(
UseCaseError.create(
UseCaseError.REPOSITORY_ERROR,
"Error al listar los usurios",
_error,
),
UseCaseError.create(UseCaseError.REPOSITORY_ERROR, "Error al listar los usuarios", _error)
);
}
}

View File

@ -1,4 +1,5 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import rTracer from "cls-rtracer";
import path from "path";
import { createLogger, format, transports } from "winston";
import DailyRotateFile from "winston-daily-rotate-file";
@ -85,3 +86,7 @@ function initLogger(rTracer) {
}
export { initLogger };
export const logger = () => {
return initLogger(rTracer);
};