Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 1x 2x 2x 2x | import { ROUTES_PATH } from '../constants/routes.js'
import Logout from "./Logout.js"
export default class NewBill {
constructor({ document, onNavigate, store, localStorage }) {
this.document = document
this.onNavigate = onNavigate
this.store = store
const formNewBill = this.document.querySelector(`form[data-testid="form-new-bill"]`)
formNewBill.addEventListener("submit", this.handleSubmit)
const file = this.document.querySelector(`input[data-testid="file"]`)
file.addEventListener("change", this.handleChangeFile)
this.fileUrl = null
this.fileName = null
this.billId = null
new Logout({ document, localStorage, onNavigate })
}
handleChangeFile = e => {
e.preventDefault()
const file = this.document.querySelector(`input[data-testid="file"]`).files[0]
const filePath = e.target.value.split(/\\/g)
const fileName = filePath[filePath.length-1]
const formData = new FormData()
const email = JSON.parse(localStorage.getItem("user")).email
formData.append('file', file)
formData.append('email', email)
if(e.target.files[0].type === "image/jpeg" || e.target.files[0].type === "image/png") {
this.store
.bills()
.create({
data: formData,
headers: {
noContentType: true
}
})
.then(({fileUrl, key}) => {
console.log(fileUrl)
this.billId = key
this.fileUrl = fileUrl
this.fileName = fileName
}).catch(error => console.error(error))
} else E{
document.querySelector(`input[data-testid="file"]`).value = "";
}
}
handleSubmit = e => {
e.preventDefault()
console.log('e.target.querySelector(`input[data-testid="datepicker"]`).value', e.target.querySelector(`input[data-testid="datepicker"]`).value)
const email = JSON.parse(localStorage.getItem("user")).email
const bill = {
email,
type: e.target.querySelector(`select[data-testid="expense-type"]`).value,
name: e.target.querySelector(`input[data-testid="expense-name"]`).value,
amount: parseInt(e.target.querySelector(`input[data-testid="amount"]`).value),
date: e.target.querySelector(`input[data-testid="datepicker"]`).value,
vat: e.target.querySelector(`input[data-testid="vat"]`).value,
pct: parseInt(e.target.querySelector(`input[data-testid="pct"]`).value) || 20,
commentary: e.target.querySelector(`textarea[data-testid="commentary"]`).value,
fileUrl: this.fileUrl,
fileName: this.fileName,
status: 'pending'
}
this.updateBill(bill)
this.onNavigate(ROUTES_PATH['Bills'])
}
// not need to cover this function by tests
updateBill = (bill) => {
Eif (this.store) {
this.store
.bills()
.update({data: JSON.stringify(bill), selector: this.billId})
.then(() => {
this.onNavigate(ROUTES_PATH['Bills'])
})
.catch(error => console.error(error))
}
}
} |