Files
contractor/upload.cfm
T

76 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<cfsetting showdebugoutput="no" enablecfoutputonly="true">
<cfheader name="Content-Type" value="application/json; charset=utf-8">
<cfset result = {ok: false, error: "no file"}>
<cftry>
<cfif structKeyExists(form, "files") AND len(form.files)>
<cffile action="upload" fileField="files" destination="#getTempDirectory()#" nameConflict="makeUnique" result="upload">
<cfset mime = "application/octet-stream">
<cfif listLast(upload.clientFile, ".") EQ "pdf">
<cfset mime = "application/pdf">
<cfelseif listLast(upload.clientFile, ".") EQ "docx">
<cfset mime = "application/vnd.openxmlformats-officedocument.wordprocessingml.document">
<cfelseif listLast(upload.clientFile, ".") EQ "doc">
<cfset mime = "application/msword">
<cfelseif listLast(upload.clientFile, ".") EQ "zip">
<cfset mime = "application/zip">
</cfif>
<cffile action="readBinary" file="#upload.serverDirectory#/#upload.serverFile#" variable="fileBytes">
<cftransaction>
<cfquery datasource="baza">
INSERT INTO documents (filename, mime_type, original_bytes, status)
VALUES (
<cfqueryparam value="#upload.clientFile#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#mime#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#toBase64(fileBytes)#" cfsqltype="cf_sql_varchar">,
'uploaded'
)
</cfquery>
<cfquery name="doc" datasource="baza">
SELECT id FROM documents
WHERE filename = <cfqueryparam value="#upload.clientFile#" cfsqltype="cf_sql_varchar">
AND status = 'uploaded'
ORDER BY created_at DESC LIMIT 1
</cfquery>
<!--- Если передан contract_id — используем существующий --->
<cfif structKeyExists(form, "contract_id") AND len(form.contract_id)>
<cfset cid = {id: form.contract_id}>
<cfset suppType = "additional">
<cfelse>
<cfquery datasource="baza">
INSERT INTO contracts (number, client) VALUES (
<cfqueryparam value="б/н #dateFormat(now(), 'yyyymmdd')#-#timeFormat(now(), 'HHmm')#" cfsqltype="cf_sql_varchar">,
''
)
</cfquery>
<cfquery name="cid" datasource="baza">
SELECT id FROM contracts ORDER BY created_at DESC LIMIT 1
</cfquery>
<cfset suppType = "initial">
</cfif>
<cfquery datasource="baza">
INSERT INTO supplements (contract_id, document_id, type) VALUES (
<cfqueryparam value="#cid.id#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#doc.id#" cfsqltype="cf_sql_varchar">,
<cfqueryparam value="#suppType#" cfsqltype="cf_sql_varchar">
)
</cfquery>
</cftransaction>
<cfset result = {ok: true, contract_id: cid.id, doc_id: doc.id, filename: upload.clientFile, size: upload.fileSize}>
</cfif>
<cfcatch>
<cfset result = {ok: false, error: cfcatch.message, detail: cfcatch.detail}>
</cfcatch>
</cftry>
<cfoutput>#serializeJSON(result)#</cfoutput>