Kaynağa Gözat

Make Result an attribute of Loan type

Move Result attribute from Estimate to it's related Loan to make it's
meaning less confusing.
master
Immanuel Onyeka 1 yıl önce
ebeveyn
işleme
3b66fe413a
3 değiştirilmiş dosya ile 72 ekleme ve 15 silme
  1. +2
    -1
      components/estimate-test.vue
  2. +20
    -14
      skouter.go
  3. +50
    -0
      views/test.tpl

+ 2
- 1
components/estimate-test.vue Dosyayı Görüntüle

@@ -77,7 +77,8 @@ function getEstimates() {

function getPdf() {
fetch(`/api/pdf`,
{method: 'GET',
{method: 'POST',
body: JSON.stringify(estimate.value),
headers: {
"Accept": "application/json",
"Authorization": `Bearer ${props.token}`,


+ 20
- 14
skouter.go Dosyayı Görüntüle

@@ -122,6 +122,7 @@ type Loan struct {
Mi MI `json:"mi"`
Fees []Fee `json:"fees"`
Name string `json:"title"`
Result Result `json:"result"`
}

type MI struct {
@@ -159,7 +160,6 @@ type Estimate struct {
Zip string `json:"zip"`
Pud bool `json:"pud"`
Loans []Loan `json:"loans"`
Results []Result `json:"results"`
}

type Password struct {
@@ -861,10 +861,15 @@ func queryUsers(db *sql.DB, id int) ( []User, error ) {
return users, nil
}

func insertResults(db *sql.DB, results []Result) (error){
func insertResults(db *sql.DB, estimate Estimate) (error){
var query string
var row *sql.Row
var err error
var results []Result
for i := range estimate.Loans {
results = append(results, estimate.Loans[i].Result)
}

query = `INSERT INTO estimate_result
(
@@ -1456,12 +1461,6 @@ func getEstimates(db *sql.DB, id int, user int) ( []Estimate, error ) {
return estimates, err
}
estimate.Borrower = borrower
estimate.Results, err = getResults(db, estimate.Id, 0)
if err != nil {
return estimates, err
}
estimates = append(estimates, estimate)
}

@@ -1676,8 +1675,8 @@ func createEstimate(w http.ResponseWriter, db *sql.DB, r *http.Request) {

estimate, err = insertEstimate(db, estimate)
if err != nil { http.Error(w, err.Error(), 422); return }
estimate.Results = makeResults(estimate)
err = insertResults(db, estimate.Results)
makeResults(estimate)
err = insertResults(db, estimate)
if err != nil { http.Error(w, err.Error(), 500); return }
e, err := getEstimates(db, estimate.Id, 0)
if err != nil { http.Error(w, err.Error(), 500); return }
@@ -1825,6 +1824,8 @@ func showPDF(w http.ResponseWriter, r *http.Request) {
var pa = template.Must(template.ParseFiles("views/master.tpl",
"views/test.tpl"))
estimates, err := getEstimates(db, 1, 0)
if err != nil { w.WriteHeader(500); return }
// claims, err := getClaims(r)
if err != nil { w.WriteHeader(500); return }
@@ -1836,10 +1837,12 @@ func showPDF(w http.ResponseWriter, r *http.Request) {
Avatar string
Letterhead string
User User
Estimate Estimate
}{
Title: "test PDF",
Name: "idk-random-name",
User: users[0],
Estimate: estimates[0],
}
avatar, err := fetchAvatar(db, info.User.Id)
letterhead, err := fetchLetterhead(db, info.User.Id)
@@ -1854,7 +1857,8 @@ func showPDF(w http.ResponseWriter, r *http.Request) {
}

func getPdf(w http.ResponseWriter, db *sql.DB, r *http.Request) {
var err error
var estimate Estimate
err := json.NewDecoder(r.Body).Decode(&estimate)
cmd := exec.Command("wkhtmltopdf", "-", "-")
stdout, err := cmd.StdoutPipe()
@@ -1878,13 +1882,13 @@ func getPdf(w http.ResponseWriter, db *sql.DB, r *http.Request) {
var pa = template.Must(template.ParseFiles("views/pdf.tpl",
"views/test.tpl"))
// claims, err := getClaims(r)
claims, err := getClaims(r)
if err != nil {
w.WriteHeader(500);
log.Println(err)
return
}
users, err := queryUsers(db, 1)
users, err := queryUsers(db, claims.Id)
info := struct {
Title string
@@ -1892,10 +1896,12 @@ func getPdf(w http.ResponseWriter, db *sql.DB, r *http.Request) {
Avatar string
Letterhead string
User User
Estimate Estimate
}{
Title: "test PDF",
Name: "idk-random-name",
User: users[0],
Estimate: estimate,
}
avatar, err := fetchAvatar(db, info.User.Id)
letterhead, err := fetchLetterhead(db, info.User.Id)
@@ -2055,7 +2061,7 @@ func api(w http.ResponseWriter, r *http.Request) {
guard(r, 1):
summarize(w, db, r)
case match(p, "/api/pdf", &args) &&
r.Method == http.MethodGet &&
r.Method == http.MethodPost &&
guard(r, 1):
getPdf(w, db, r)
default:


+ 50
- 0
views/test.tpl Dosyayı Görüntüle

@@ -26,6 +26,55 @@

</header>

<table>
<thead><tr>
<th></th>{{range $l := .Estimate.Loans}}<th>{{$l.Name}}</th>{{end}}
</tr></thead>

<tbody>
<tr><td>Type</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Type.Name}}</td>{{end}}</tr>
<tr><td>Term</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Term}} Years</td>{{end}}</tr>
<tr><td>Amortization</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Amortization}}</td>{{end}}</tr>
<tr><td>Interest rate</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Interest}}%</td>{{end}}</tr>
<tr><td>Monthly MI</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Premium}}/month</td>{{end}}</tr>
<tr><td>MI Premium</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Upfront}}</td>{{end}}</tr>
<tr><td>Real estate taxes</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Tax}}</td>{{end}}</tr>
<tr class="total"><td>Total monthly payment</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Result}}</td>{{end}}</tr>

<tr><td>Purchase price</td>
{{range $l := .Estimate.Loans}}<td>{{$.Estimate.Price}}</td>{{end}}</tr>
<tr><td>Term</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Term}} Years</td>{{end}}</tr>
<tr><td>Amortization</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Amortization}}</td>{{end}}</tr>
<tr><td>Interest rate</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Interest}}%</td>{{end}}</tr>
<tr><td>Monthly MI</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Premium}}/month</td>{{end}}</tr>
<tr><td>MI Premium</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Upfront}}</td>{{end}}</tr>
<tr><td>Real estate taxes</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Tax}}</td>{{end}}</tr>
<tr class="total"><td>Total monthly payment</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Result}}</td>{{end}}</tr>
</tbody>

</table>

<section class="summary">
<div class="box">
{{.Estimate}}
</div>
</section>

<style scoped>
#pdf-doc {
margin: 4px 30px;
@@ -36,6 +85,7 @@
border-bottom: 1px solid lightgrey;
margin-bottom: 20px;
color: var(--text);
text-align: center;
}

.disclaimer p {


Yükleniyor…
İptal
Kaydet