modifications

main
josh 3 years ago
parent 0625d414ed
commit cc89fa869e

@ -15,6 +15,10 @@ import { EmdFeeTypeModule } from './tables/emd-fee-type/emd-fee-type.module';
import { TenderModule } from './transactions/tender/tender.module'; import { TenderModule } from './transactions/tender/tender.module';
import { TenderDocModule } from './tables/tender-documents/tender-doc.module'; import { TenderDocModule } from './tables/tender-documents/tender-doc.module';
import { DocumentTypeModule } from './tables/document-type/document-type.module'; import { DocumentTypeModule } from './tables/document-type/document-type.module';
import { CoversLovModule } from './tables/covers-lov/covers-lov.module';
import { FileFormatLovModule } from './tables/file-format-lov/file-format-lov.module';
import { CoversMasterModule } from './tables/covers-master/covers-master.module';
@ -35,8 +39,9 @@ import { DocumentTypeModule } from './tables/document-type/document-type.module'
TenderModule, TenderModule,
TenderDocModule, TenderDocModule,
DocumentTypeModule, DocumentTypeModule,
CoversLovModule,
FileFormatLovModule,
CoversMasterModule
], ],
}) })
export class AppModule { } export class AppModule { }

@ -0,0 +1,6 @@
export class coverTypeDto{
id:number
coverType:string
}

@ -2,4 +2,6 @@ export class DocumentTypeDto{
id:number; id:number;
documentType:string; documentType:string;
docCategory:string
} }

@ -0,0 +1,5 @@
export class FileFormatLovDto{
id:number;
fileFormat:string;
}

@ -1,14 +1,14 @@
export class TenderDocumentDto{ export class TenderDocumentDto{
tender_id:string; tenderId:string;
doc_name:string; docName:string;
description:string; description:string;
doc_type:string; docType:string;
doc_size:number; documentSize:number;
doc_category:string documentCategory:string;
} }

@ -88,6 +88,37 @@ export class FileUploadController {
} }
@Post('drawings/:id')
@UseInterceptors(FileInterceptor('file', {
storage: diskStorage({
// destination: './uploads/cars',
destination: (req, res, cb) => {
// console.log(req);
const filePath: string = './uploads/Drawings/'+req.params.id;
createFolders(filePath);
return cb(null, filePath);
},
filename: (req, file, cb) => {
console.log('===here===file upload==');
const randomName = Array(32).fill(null).map(() => (Math.round(Math.random() * 16)).toString(16)).join('');
return cb(null, `${randomName}${extname(file.originalname)}`);
}
})
}))
drawings(@UploadedFile() file) {
if (!file) {
return { error: 'No file uploaded.' };
}
//To return the size of the document in kb
const fileSizeKB = Math.ceil(file.size / 1024);
return { fileName: file.filename, filePath: file.path, fileSizeKB };
}
@Get('Bank-Documents/:id/:imgpath') @Get('Bank-Documents/:id/:imgpath')
getBankDocuments( getBankDocuments(
@Param('imgpath') image: string, @Param('imgpath') image: string,
@ -132,9 +163,11 @@ export class FileUploadController {
if (!fs.existsSync(folderPath)) { if (!fs.existsSync(folderPath)) {
res.status(404).send({ error: 'File not found' }); res.status(404).send({ error: 'File not found' });
return; return;
} }
const zipFileName = id + '.zip'; //Uncomment when we want tender id as the zip file name
//const zipFileName = id + '.zip';
const zipFileName = 'tenderDocuments.zip';
const zipPath = path.join('./uploads/BankDocuments', zipFileName); const zipPath = path.join('./uploads/BankDocuments', zipFileName);
// Create a new archive // Create a new archive
@ -174,5 +207,63 @@ export class FileUploadController {
}); });
} }
@Get('Drawings-Arc/:id')
async getDrawingsAsZip(
@Param('id') id: string,
@Res() res,
@Req() req,
) {
const folderPath = path.join('./uploads/Drawings', id);
if (!fs.existsSync(folderPath)) {
res.status(404).send({ error: 'File not found' });
return;
}
//Uncomment when we want tender id as the zip file name
//const zipFileName = id + '.zip';
const zipFileName = 'Drawings.zip';
const zipPath = path.join('./uploads/Drawings', zipFileName);
// Create a new archive
const archive = archiver('zip', {
zlib: { level: 9 } // Set compression level (optional)
});
// Create a write stream to the zip file
const output = fs.createWriteStream(zipPath);
// Pipe the archive to the write stream
archive.pipe(output);
// Add the entire folder to the archive
archive.directory(folderPath, id);
// Finalize the archive
await archive.finalize();
// Set the appropriate headers for downloading the zip file
res.attachment(zipFileName);
res.setHeader('Content-Type', 'application/zip');
// Stream the zip file to the response
const readStream = fs.createReadStream(zipPath);
readStream.pipe(res);
// Remove the temporary zip file once it's streamed
readStream.on('end', () => {
fs.unlinkSync(zipPath);
});
// Handle any errors that occur during the archiving process
archive.on('error', function (err) {
console.log(err);
res.status(500).send({ error: 'Failed to create the zip file' });
});
}
} }

@ -22,12 +22,14 @@ export class PcdTransactionController<T> {
return await this.service.findOne(filter, id); return await this.service.findOne(filter, id);
} }
@UseGuards(AuthGuard())
@Post() @Post()
async createOne(@Body() body: T, ): Promise<T> { async createOne(@Body() body: T, ): Promise<T> {
return await this.service.createOne(body,); return await this.service.createOne(body,);
} }
@Delete('/:id') @Delete('/:id')
async delete(@Query() filter: FindManyOptions,@Param('id') id: string , ): Promise<any> { async delete(@Query() filter: FindManyOptions,@Param('id') id: string , ): Promise<any> {
return await this.service.deleteOne(filter,id, ); return await this.service.deleteOne(filter,id, );

@ -0,0 +1,15 @@
import { Controller } from '@nestjs/common';
import { coverTypeDto } from 'src/dto/cover-type.dto';
import { PcdFormGridController } from 'src/framework/beans/pcd-form-grid.controller';
import { CoversLovService } from './covers-lov.service';
@Controller('covers-lov')
export class CoversLovController extends PcdFormGridController<coverTypeDto>{
constructor(
private coversLovService: CoversLovService
) {
super(coversLovService);
}
}

@ -0,0 +1,21 @@
import { PcdBaseDto } from "src/framework/custom/pcd-dto.custom";
import { PcdBaseEntity } from "src/framework/custom/pcd-entity.custom";
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity('covers-lov')
export class CoversLov extends PcdBaseEntity{
@PrimaryGeneratedColumn({
name:"id"
})
id:number
@Column({
name:"covertype",
type:"varchar",
length:500,
nullable:true
})
coverType:string
}

@ -0,0 +1,15 @@
import { Module } from '@nestjs/common';
import { CoversLovController } from './covers-lov.controller';
import { CoversLovService } from './covers-lov.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from 'src/auth/auth.module';
import { CoversLovRepository } from './covers-lov.repository';
@Module({
imports: [
TypeOrmModule.forFeature([CoversLovRepository]),
],
controllers: [CoversLovController],
providers: [CoversLovService]
})
export class CoversLovModule {}

@ -0,0 +1,7 @@
import { EntityRepository, Repository } from "typeorm";
import { CoversLov } from "./covers-lov.entity";
@EntityRepository(CoversLov)
export class CoversLovRepository extends Repository<CoversLov>{
}

@ -0,0 +1,17 @@
import { Injectable } from '@nestjs/common';
import { PcdFormGridService } from 'src/framework/beans/pcd-form-grid.service';
import { CoversLov } from './covers-lov.entity';
import { InjectRepository } from '@nestjs/typeorm';
import { CoversLovRepository } from './covers-lov.repository';
@Injectable()
export class CoversLovService extends PcdFormGridService<CoversLov>{
constructor(
@InjectRepository(CoversLovRepository)
private coversLovRepository: CoversLovRepository,
) {
super(coversLovRepository);
}
}

@ -0,0 +1,4 @@
import { Controller } from '@nestjs/common';
@Controller('covers-master')
export class CoversMasterController {}

@ -2,8 +2,8 @@ import { PcdBaseEntity } from "src/framework/custom/pcd-entity.custom";
import { TenderMaster } from "src/tables/tender-master/tender-master.entity"; import { TenderMaster } from "src/tables/tender-master/tender-master.entity";
import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn } from "typeorm";
@Entity('imp-doc') @Entity('cover-doc-master')
export class ImportantDoc extends PcdBaseEntity{ export class CoverDoc extends PcdBaseEntity{
@PrimaryColumn({ @PrimaryColumn({
name:"id" name:"id"
@ -17,26 +17,19 @@ export class ImportantDoc extends PcdBaseEntity{
}) })
tenderId:number tenderId:number
@Column({ @Column({
name:"category", name:"cover_type",
type:"varchar", type:"varchar",
length:500, length:500,
nullable:true nullable:true
}) })
category:string coverType:string
@Column({ @Column({
name:"sub_category", name:"desc",
type:"varchar", type:"varchar",
length:500, length:500,
nullable:true nullable:true
}) })
subCategory:string Description:string
@Column({
name:"sub_category_desc",
type:"varchar",
length:500,
nullable:true
})
subCategoryDesc:string
@Column({ @Column({
name:"file_format", name:"file_format",
@ -46,7 +39,7 @@ export class ImportantDoc extends PcdBaseEntity{
}) })
fileFormat:string fileFormat:string
@ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.importantDoc) @ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.coverDoc)
@JoinColumn([{ name: "tender_id", referencedColumnName: "id" }]) @JoinColumn([{ name: "tender_id", referencedColumnName: "id" }])
tenderIdD:TenderMaster tenderIdD:TenderMaster

@ -0,0 +1,9 @@
import { Module } from '@nestjs/common';
import { CoversMasterService } from './covers-master.service';
import { CoversMasterController } from './covers-master.controller';
@Module({
providers: [CoversMasterService],
controllers: [CoversMasterController]
})
export class CoversMasterModule {}

@ -0,0 +1,7 @@
import { EntityRepository, Repository } from "typeorm";
import { CoverDoc } from "./covers-master.entity";
@EntityRepository(CoverDoc)
export class importantDocRepository extends Repository<CoverDoc>{
}

@ -0,0 +1,4 @@
import { Injectable } from '@nestjs/common';
@Injectable()
export class CoversMasterService {}

@ -18,6 +18,14 @@ export class DocumentType extends PcdBaseEntity{
documentType:string documentType:string
@Column({
name:"doc_category",
type:"varchar",
nullable:true
})
docCategory:string
@OneToMany(() => TenderDoc, (tenderDoc) => tenderDoc.documentTypeD ) @OneToMany(() => TenderDoc, (tenderDoc) => tenderDoc.documentTypeD )
tenderDoc:TenderDoc[] tenderDoc:TenderDoc[]
} }

@ -0,0 +1,17 @@
import { Controller } from '@nestjs/common';
import { PcdFormGridController } from 'src/framework/beans/pcd-form-grid.controller';
import { FileFormatRepository } from './file-format-lov.repository';
import { FileFormatLovDto } from 'src/dto/file-format-lov.dto';
import { FileFormatLovService } from './file-format-lov.service';
@Controller('file-format-lov')
export class FileFormatLovController extends PcdFormGridController<FileFormatLovDto>{
constructor(
private fileFormatLovService: FileFormatLovService
) {
super(fileFormatLovService);
}
}

@ -0,0 +1,18 @@
import { PcdBaseEntity } from "src/framework/custom/pcd-entity.custom";
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
@Entity('file-format')
export class FileFormat extends PcdBaseEntity{
@PrimaryGeneratedColumn({
name:"id"
})
id:number
@Column({
name:"file_format",
type:"varchar",
length:500,
nullable:true
})
fileFormat:string
}

@ -0,0 +1,16 @@
import { Module } from '@nestjs/common';
import { FileFormatLovService } from './file-format-lov.service';
import { FileFormatLovController } from './file-format-lov.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { FileFormatRepository } from './file-format-lov.repository';
import { AuthModule } from 'src/auth/auth.module';
@Module({
imports: [
TypeOrmModule.forFeature([FileFormatRepository]),
],
providers: [FileFormatLovService],
controllers: [FileFormatLovController]
})
export class FileFormatLovModule {}

@ -0,0 +1,7 @@
import { EntityRepository, Repository } from "typeorm";
import { FileFormat } from "./file-format-lov.entity";
@EntityRepository(FileFormat)
export class FileFormatRepository extends Repository<FileFormat>{
}

@ -0,0 +1,18 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { FileFormatLovDto } from 'src/dto/file-format-lov.dto';
import { PcdFormGridService } from 'src/framework/beans/pcd-form-grid.service';
import { FileFormatRepository } from './file-format-lov.repository';
@Injectable()
export class FileFormatLovService extends PcdFormGridService<FileFormatLovDto>{
constructor(
@InjectRepository(FileFormatRepository)
private fileFormatRepository: FileFormatRepository,
) {
super(fileFormatRepository);
}
}

@ -1,7 +0,0 @@
import { EntityRepository, Repository } from "typeorm";
import { ImportantDoc } from "./imp-doc.entity";
@EntityRepository(ImportantDoc)
export class importantDocRepository extends Repository<ImportantDoc>{
}

@ -23,7 +23,7 @@ export class paymentInstrument extends PcdBaseEntity{
}) })
tenderId:number tenderId:number
@ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.importantDoc) @ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.coverDoc)
@JoinColumn([{ name: "tender_id", referencedColumnName: "id" }]) @JoinColumn([{ name: "tender_id", referencedColumnName: "id" }])
tenderIdD:TenderMaster tenderIdD:TenderMaster

@ -4,7 +4,7 @@ import { PcdFormGridController } from 'src/framework/beans/pcd-form-grid.control
import { TenderDocService } from './tender-doc.service'; import { TenderDocService } from './tender-doc.service';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
@UseGuards(AuthGuard())
@Controller('tender-doc') @Controller('tender-doc')
export class TenderDocController extends PcdFormGridController<TenderDocumentDto>{ export class TenderDocController extends PcdFormGridController<TenderDocumentDto>{

@ -44,11 +44,11 @@ export class TenderDoc extends PcdBaseEntity{
documentSize:number; documentSize:number;
@Column({ @Column({
name:"tender_category", name:"doc_category",
type:"varchar", type:"varchar",
nullable:true nullable:true
}) })
tenderCategory:string docCategory:string
@ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.TenderDoc) @ManyToOne(() => TenderMaster,(tenderMaster)=> tenderMaster.TenderDoc)
@JoinColumn([{ name: "tender_id", referencedColumnName: "id" }]) @JoinColumn([{ name: "tender_id", referencedColumnName: "id" }])

@ -8,7 +8,6 @@ import { AuthModule } from 'src/auth/auth.module';
@Module({ @Module({
imports: [ imports: [
TypeOrmModule.forFeature([tenderDocRepository]), TypeOrmModule.forFeature([tenderDocRepository]),
AuthModule
], ],
providers: [TenderDocService], providers: [TenderDocService],
controllers: [TenderDocController] controllers: [TenderDocController]

@ -1,9 +1,9 @@
import { Controller,Get, Param,UseGuards} from '@nestjs/common'; import { Controller,Get, Param,UseGuards} from '@nestjs/common';
import { TenderDetailsService } from './tender-details.service'; import { TenderDetailsService } from './tender-details.service';
import { PcdFormGridController } from 'src/framework/beans/pcd-form-grid.controller'; import { PcdFormGridController } from 'src/framework/beans/pcd-form-grid.controller';
import { TenderMaster } from './tender-master.entity';
import { TenderDetailDto } from 'src/dto/tender-master.dto'; import { TenderDetailDto } from 'src/dto/tender-master.dto';
import { AuthGuard } from '@nestjs/passport';
@Controller('tender-details') @Controller('tender-details')

@ -1,5 +1,4 @@
import { PcdBaseEntity } from "src/framework/custom/pcd-entity.custom"; import { PcdBaseEntity } from "src/framework/custom/pcd-entity.custom";
import { ImportantDoc } from "src/tables/imp-doc/imp-doc.entity";
import { paymentInstrument } from "src/tables/payment-instrument/payment-ins.entity"; import { paymentInstrument } from "src/tables/payment-instrument/payment-ins.entity";
import { EmdFeeType } from "src/tables/emd-fee-type/emd-fee-type.entity"; import { EmdFeeType } from "src/tables/emd-fee-type/emd-fee-type.entity";
import { FormOfContract } from "src/tables/form-of-contract/form-of-contract.entity"; import { FormOfContract } from "src/tables/form-of-contract/form-of-contract.entity";
@ -9,6 +8,7 @@ import { TenderCategory } from "src/tables/tender-category/tender-category.entit
import { TenderType } from "src/tables/tender-type/tender-type.entity"; import { TenderType } from "src/tables/tender-type/tender-type.entity";
import { TenderDoc } from "src/tables/tender-documents/tender-doc.entity"; import { TenderDoc } from "src/tables/tender-documents/tender-doc.entity";
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm"; import { Column, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryColumn, PrimaryGeneratedColumn } from "typeorm";
import { CoverDoc } from "../covers-master/covers-master.entity";
@Entity('tender_master') @Entity('tender_master')
export class TenderMaster extends PcdBaseEntity{ export class TenderMaster extends PcdBaseEntity{
@ -358,8 +358,8 @@ export class TenderMaster extends PcdBaseEntity{
activeYn:string activeYn:string
@OneToMany(() => ImportantDoc, (importantDoc) => importantDoc.tenderIdD ) @OneToMany(() => CoverDoc, (coverDoc) => coverDoc.tenderIdD )
importantDoc:ImportantDoc[] coverDoc:CoverDoc[]
@OneToMany(() => paymentInstrument, (paymentInstrument) => paymentInstrument.tenderIdD ) @OneToMany(() => paymentInstrument, (paymentInstrument) => paymentInstrument.tenderIdD )
paymentInstrument:paymentInstrument[] paymentInstrument:paymentInstrument[]

@ -4,7 +4,7 @@ import { PcdTransactionController } from 'src/framework/beans/pcd-transaction.co
import { TenderService } from './tender.service'; import { TenderService } from './tender.service';
import { AuthGuard } from '@nestjs/passport'; import { AuthGuard } from '@nestjs/passport';
@UseGuards(AuthGuard())
@Controller('tender') @Controller('tender')
export class TenderController extends PcdTransactionController<TenderDetailDto> { export class TenderController extends PcdTransactionController<TenderDetailDto> {
constructor( constructor(

@ -8,7 +8,6 @@ import { AuthModule } from 'src/auth/auth.module';
@Module({ @Module({
imports: [ imports: [
TypeOrmModule.forFeature([TenderMasterRepository]), TypeOrmModule.forFeature([TenderMasterRepository]),
AuthModule
], ],
controllers: [TenderController], controllers: [TenderController],
providers: [TenderService] providers: [TenderService]

Loading…
Cancel
Save