-
Notifications
You must be signed in to change notification settings - Fork 527
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
feat: register proposal implemented
- Loading branch information
Showing
13 changed files
with
271 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
export { ProposalModule } from './proposal.module'; | ||
export { Proposal } from './proposal.entity'; | ||
export { ProposalService } from './proposal.service'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
import { Controller, HttpStatus, Post, Body, Get, Query } from '@nestjs/common'; | ||
import { ApiUseTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; | ||
import { ProposalService } from './proposal.service'; | ||
import { Proposal } from './proposal.entity'; | ||
import { CrudController } from '../core/crud/crud.controller'; | ||
import { | ||
ProposalCreateInput as IProposalCreateInput, | ||
Proposal as IProposal | ||
} from '@gauzy/models'; | ||
import { IPagination } from '../core'; | ||
|
||
@ApiUseTags('Proposal') | ||
@Controller() | ||
export class ProposalController extends CrudController<Proposal> { | ||
constructor(private readonly proposalService: ProposalService) { | ||
super(proposalService); | ||
} | ||
|
||
@ApiOperation({ title: 'Find all proposals.' }) | ||
@ApiResponse({ | ||
status: HttpStatus.OK, | ||
description: 'Found proposals', | ||
type: Proposal | ||
}) | ||
@ApiResponse({ | ||
status: HttpStatus.NOT_FOUND, | ||
description: 'Record not found' | ||
}) | ||
@Get() | ||
async findAllProposals( | ||
@Query('data') data: string | ||
): Promise<IPagination<IProposal>> { | ||
const { relations, findInput, filterDate } = JSON.parse(data); | ||
return this.proposalService.getAllProposals( | ||
{ where: findInput, relations }, | ||
filterDate | ||
); | ||
} | ||
|
||
@ApiOperation({ title: 'Create new record' }) | ||
@ApiResponse({ | ||
status: HttpStatus.CREATED, | ||
description: 'The record has been successfully created.' /*, type: T*/ | ||
}) | ||
@ApiResponse({ | ||
status: HttpStatus.BAD_REQUEST, | ||
description: | ||
'Invalid input, The response body may contain clues as to what went wrong' | ||
}) | ||
@Post('/create') | ||
async createOrganizationTeam( | ||
@Body() entity: IProposalCreateInput, | ||
...options: any[] | ||
): Promise<Proposal> { | ||
return this.proposalService.create(entity); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
import { | ||
Column, | ||
Entity, | ||
Index, | ||
JoinColumn, | ||
RelationId, | ||
ManyToOne | ||
} from 'typeorm'; | ||
import { ApiModelProperty, ApiModelPropertyOptional } from '@nestjs/swagger'; | ||
import { | ||
IsNotEmpty, | ||
IsString, | ||
IsNumber, | ||
IsOptional, | ||
IsDate, | ||
IsEnum | ||
} from 'class-validator'; | ||
import { Base } from '../core/entities/base'; | ||
import { Proposal as IProposal } from '@gauzy/models'; | ||
import { Employee } from '../employee'; | ||
|
||
@Entity('proposal') | ||
export class Proposal extends Base implements IProposal { | ||
@ApiModelProperty({ type: Employee }) | ||
@ManyToOne((type) => Employee, { nullable: true, onDelete: 'CASCADE' }) | ||
@JoinColumn() | ||
employee: Employee; | ||
|
||
@ApiModelProperty({ type: String, readOnly: true }) | ||
@RelationId((proposal: Proposal) => proposal.employee) | ||
@IsString() | ||
@Column({ nullable: true }) | ||
readonly employeeId?: string; | ||
|
||
@ApiModelProperty({ type: String }) | ||
@Index() | ||
@IsString() | ||
@IsNotEmpty() | ||
@Column({ nullable: true }) | ||
jobPostUrl: string; | ||
|
||
@ApiModelPropertyOptional({ type: Date }) | ||
@IsDate() | ||
@IsOptional() | ||
@Column({ nullable: true }) | ||
valueDate?: Date; | ||
|
||
@ApiModelPropertyOptional({ type: String }) | ||
@IsString() | ||
@IsOptional() | ||
@Column() | ||
jobPostContent?: string; | ||
|
||
@ApiModelPropertyOptional({ type: String }) | ||
@IsString() | ||
@IsOptional() | ||
@Column() | ||
proposalContent?: string; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import { Module } from '@nestjs/common'; | ||
import { TypeOrmModule } from '@nestjs/typeorm'; | ||
import { Proposal } from './/proposal.entity'; | ||
import { ProposalController } from './/proposal.controller'; | ||
import { ProposalService } from './proposal.service'; | ||
import { Employee } from '../employee'; | ||
|
||
@Module({ | ||
imports: [TypeOrmModule.forFeature([Proposal, Employee])], | ||
controllers: [ProposalController], | ||
providers: [ProposalService], | ||
exports: [ProposalService] | ||
}) | ||
export class ProposalModule {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import { Injectable } from '@nestjs/common'; | ||
import { InjectRepository } from '@nestjs/typeorm'; | ||
import { Repository, FindManyOptions } from 'typeorm'; | ||
import { Proposal } from './proposal.entity'; | ||
import { CrudService } from '../core/crud/crud.service'; | ||
import { IPagination } from '../core'; | ||
import { | ||
ProposalCreateInput as IProposalCreateInput, | ||
Proposal as IProposal | ||
} from '@gauzy/models'; | ||
import { Employee } from '../employee'; | ||
|
||
@Injectable() | ||
export class ProposalService extends CrudService<Proposal> { | ||
constructor( | ||
@InjectRepository(Proposal) | ||
private readonly proposalRepository: Repository<Proposal>, | ||
@InjectRepository(Employee) | ||
private readonly employeeRepository: Repository<Employee> | ||
) { | ||
super(proposalRepository); | ||
} | ||
|
||
async getAllProposals( | ||
filter?: FindManyOptions<Proposal>, | ||
filterDate?: string | ||
): Promise<IPagination<IProposal>> { | ||
const total = await this.repository.count(filter); | ||
let items = await this.repository.find(filter); | ||
|
||
if (filterDate) { | ||
const dateObject = new Date(filterDate); | ||
|
||
const month = dateObject.getMonth() + 1; | ||
const year = dateObject.getFullYear(); | ||
|
||
items = items.filter((i) => { | ||
const currentItemMonth = i.valueDate.getMonth() + 1; | ||
const currentItemYear = i.valueDate.getFullYear(); | ||
return currentItemMonth === month && currentItemYear === year; | ||
}); | ||
} | ||
|
||
return { items, total }; | ||
} | ||
|
||
async createProposal(entity: IProposalCreateInput): Promise<Proposal> { | ||
const proposal = new Proposal(); | ||
proposal.jobPostUrl = entity.jobPostUrl; | ||
proposal.valueDate = entity.valueDate; | ||
proposal.jobPostContent = entity.jobPostContent; | ||
proposal.proposalContent = entity.proposalContent; | ||
|
||
const employee = await this.employeeRepository.findOneOrFail( | ||
entity.employeeId | ||
); | ||
|
||
return this.proposalRepository.save(proposal); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
import { Injectable } from '@angular/core'; | ||
import { HttpClient } from '@angular/common/http'; | ||
import { first } from 'rxjs/operators'; | ||
import { Proposal, ProposalCreateInput } from '@gauzy/models'; | ||
|
||
@Injectable() | ||
export class ProposalsService { | ||
constructor(private http: HttpClient) {} | ||
|
||
create(createInput: ProposalCreateInput): Promise<Proposal> { | ||
return this.http | ||
.post<Proposal>('/api/proposal/create', createInput) | ||
.pipe(first()) | ||
.toPromise(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.