|
|
@@ -6,6 +6,7 @@ import { PageRequest } from '../common/dto/page-request'
|
|
|
import { Form } from './entities/form.entity'
|
|
|
import { FormDto } from './dto/form.dto'
|
|
|
import { Field } from './entities/filed.entity'
|
|
|
+import { UserField } from './entities/userField.entity'
|
|
|
|
|
|
@Injectable()
|
|
|
export class FormService {
|
|
|
@@ -13,7 +14,9 @@ export class FormService {
|
|
|
@InjectRepository(Form)
|
|
|
private readonly formRepository: Repository<Form>,
|
|
|
@InjectRepository(Field)
|
|
|
- private readonly filedRepository: Repository<Field>
|
|
|
+ private readonly filedRepository: Repository<Field>,
|
|
|
+ @InjectRepository(UserField)
|
|
|
+ private readonly userFieldRepository: Repository<UserField>
|
|
|
) {}
|
|
|
|
|
|
public async create(formDto: FormDto) {
|
|
|
@@ -88,4 +91,69 @@ export class FormService {
|
|
|
async delete(id: number) {
|
|
|
await this.formRepository.delete(id)
|
|
|
}
|
|
|
+
|
|
|
+ async saveUserFileds(fields: Array<Partial<UserField>>) {
|
|
|
+ await fields.forEach(async (field) => {
|
|
|
+ await this.userFieldRepository.save(field)
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ async getUserFields(userId, orgId) {
|
|
|
+ const form = await this.formRepository.findOneBy({
|
|
|
+ orgId: orgId,
|
|
|
+ used: true
|
|
|
+ })
|
|
|
+ const filedsNum = await this.userFieldRepository.countBy({
|
|
|
+ formId: form.id,
|
|
|
+ userId: userId
|
|
|
+ })
|
|
|
+ if (filedsNum) {
|
|
|
+ //收集成功
|
|
|
+ return {
|
|
|
+ code: 1
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const fileds = await this.getFileds(String(form.id))
|
|
|
+ //未填写返回表单
|
|
|
+ return {
|
|
|
+ code: 0,
|
|
|
+ form: form,
|
|
|
+ fileds: fileds
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ async getUserFieldsByForm(formId) {
|
|
|
+ const fileds = await this.getFileds(formId)
|
|
|
+ const filedsNum = await this.userFieldRepository.countBy({
|
|
|
+ formId: formId
|
|
|
+ })
|
|
|
+ let backFileds = <any>[]
|
|
|
+ if (filedsNum) {
|
|
|
+ const userFileds = await this.userFieldRepository.findBy({
|
|
|
+ formId: formId
|
|
|
+ })
|
|
|
+ let filedMap = new Map()
|
|
|
+ userFileds.forEach((userFiled) => {
|
|
|
+ if (filedMap.has(userFiled.userId)) {
|
|
|
+ filedMap.set(userFiled.userId, {
|
|
|
+ ...filedMap.get(userFiled.userId),
|
|
|
+ [userFiled.filedId]: userFiled.value
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ filedMap.set(userFiled.userId, {
|
|
|
+ userId: userFiled.userId,
|
|
|
+ [userFiled.filedId]: userFiled.value,
|
|
|
+ createdAt: userFiled.createdAt
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ backFileds = [...filedMap.values()]
|
|
|
+ console.log(backFileds)
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ fileds,
|
|
|
+ backFileds
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|