Advertisement
fajarhid

a

Nov 4th, 2020 (edited)
2,482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 7.86 KB | None | 0 0
  1. package routes
  2.  
  3. import (
  4.     "Djv-Order-Service-v2-go/config"
  5.     "Djv-Order-Service-v2-go/generator"
  6.     "Djv-Order-Service-v2-go/models"
  7.     "encoding/json"
  8.     "log"
  9.     "time"
  10.  
  11.     "github.com/gin-gonic/gin"
  12. )
  13.  
  14. func AddOrderNew(c *gin.Context) {
  15.     db := config.Connect()
  16.     res := c.Writer
  17.     var errRes models.ResponseError
  18.     var addOrder models.Orders
  19.     c.BindJSON(&addOrder)
  20.  
  21.     dt := time.Now()
  22.     dates := dt.Format("2006.01.02 15:04:05")
  23.     OrdID := generator.OrderID()
  24.  
  25.     var totalPrice []int
  26.     var totalDimension []int
  27.     var totalWeight []int
  28.  
  29.     for _, ordDetail := range addOrder.OrderDetails {
  30.         totalPrice = append(totalPrice, ordDetail.OrddPrice)
  31.         for _, ordLoad := range ordDetail.OrderLoad {
  32.             totalDimension = append(totalDimension, ordLoad.Ordldimensionloadstotalunit)
  33.             totalWeight = append(totalWeight, ordLoad.Ordlweightloadstotalunit)
  34.         }
  35.     }
  36.  
  37.     tx = db.Begin()
  38.     var ID int
  39.     var ordid string
  40.     // var orddid int
  41.     status := res.Status()
  42.     order, errOrder := tx.NamedQuery(`
  43.             INSERT INTO orders
  44.             (ordid,
  45.             ordassignmenttype,
  46.             ordcompanyshipperid,
  47.             ordusershipperid,
  48.             ordcompanyshippername,
  49.             ordtotalprice,
  50.             ordbookedby,
  51.             ordcreatedat,
  52.             ordcompanytransporterid,
  53.             ordusertransportername,
  54.             ordtotalesttimearrived,
  55.             ordusertransporterid)
  56.             VALUES (:ordid,
  57.                     :type,
  58.                     :cmpshpid,
  59.                     :usrshpid,
  60.                     :cmpshpname,
  61.                     :ordtotalprice,
  62.                     :ordbookedby,
  63.                     :ordcreatedat,
  64.                     :ordcompanytransporterid,
  65.                     :ordusertransportername,
  66.                     :ordtotalesttimearrived,
  67.                     :ordusertransporterid) RETURNING id, ordid`,
  68.         map[string]interface{}{
  69.             "ordid":                   OrdID,
  70.             "type":                    addOrder.OrdAssignmentType,
  71.             "cmpshpid":                addOrder.OrdCompanyShipperID,
  72.             "usrshpid":                addOrder.OrdUserShipperID,
  73.             "cmpshpname":              addOrder.OrdCompanyShipperName,
  74.             "ordtotalprice":           sum(totalPrice),
  75.             "ordbookedby":             addOrder.OrdBookedBy,
  76.             "ordcreatedat":            dates,
  77.             "ordcompanytransporterid": addOrder.OrdCompanyTransporterID,
  78.             "ordusertransportername":  addOrder.OrdUserTransporterName,
  79.             "ordtotalesttimearrived":  addOrder.OrdTotalEstTimeArrived,
  80.             "ordusertransporterid":    addOrder.OrdUserTransporterID,
  81.         })
  82.     if errOrder != nil {
  83.         tx.Rollback()
  84.         log.Fatalln("ORDER ", errOrder)
  85.     }
  86.  
  87.     for order.Next() {
  88.         order.Scan(&ID, &ordid)
  89.     }
  90.     for _, ordDetail := range addOrder.OrderDetails {
  91.         _, errDetail := tx.NamedQuery(`
  92.         INSERT INTO orderdetail
  93.         (ordid,
  94.          orddorigincompanyname,
  95.          ordddestcompanyname,
  96.          ordddistance,
  97.          orddesttimepickupon,
  98.          orddesttimedropoffon,
  99.          orddstatus,
  100.          orddtrackstatus,
  101.          orddprice,
  102.          orddorigincompanyid,
  103.          ordddestcompanyid,
  104.          orddorigincompanycity,
  105.          orddorigincompanyadress,
  106.          orddorigincompanypostalcode,
  107.          ordddestcompanyaddress,
  108.          orddesttimearrived,
  109.          ordddestcompanycity,
  110.          orddddestcompanypostalcode,
  111.          orddponumber,
  112.          orddordernumber,
  113.          orddshipmentnumber,
  114.          orddloadingnotes,
  115.          orddoriginlat,
  116.          orddoriginlong,
  117.          ordddestlat,
  118.          ordddestlong,
  119.          ordddimensionloadstotalallunit,
  120.          orddweightloadstotalallunit)
  121.         VALUES   (:ordID,
  122.                 :originCompanyName,
  123.                 :destCompanyName,
  124.                 :distance,
  125.                 :estTimePickupOn,
  126.                 :estDropoffOn,
  127.                 :status,
  128.                 :trackStatus,
  129.                 :price,
  130.                 :originCompanyId,
  131.                 :destCompanyId,
  132.                 :originCompanyCity,
  133.                 :originCompanyAdress,
  134.                 :originCompanyPostalCode,
  135.                 :destCompanyAddress,
  136.                 :esttimearrived,
  137.                 :destCompanyCity,
  138.                 :destCompanyPostalCode,
  139.                 :poNumber,
  140.                 :orderNumber,
  141.                 :shipmentNumber,
  142.                 :loadingNotes,
  143.                 :originLat,
  144.                 :originLong,
  145.                 :destLat,
  146.                 :destLong,
  147.                 :ordddimensionloadstotalallunit,
  148.                 :orddweightloadstotalallunit) RETURNING id`, map[string]interface{}{
  149.             "ordID":                          OrdID,
  150.             "originCompanyName":              ordDetail.OrddOriginCompanyName,
  151.             "destCompanyName":                ordDetail.OrddDestCompanyName,
  152.             "distance":                       ordDetail.OrddDistance,
  153.             "estTimePickupOn":                ordDetail.OrddEstTimePickupOn,
  154.             "estDropoffOn":                   ordDetail.OrddEstTimeDropoffOn,
  155.             "status":                         1,
  156.             "trackStatus":                    ordDetail.OrddTrackStatus,
  157.             "price":                          ordDetail.OrddPrice,
  158.             "originCompanyId":                ordDetail.OrddOriginCompanyID,
  159.             "destCompanyId":                  ordDetail.OrddDestCompanyID,
  160.             "originCompanyCity":              ordDetail.OrddOriginCompanyCity,
  161.             "originCompanyAdress":            ordDetail.OrddOriginCompanyAdress,
  162.             "originCompanyPostalCode":        ordDetail.OrddOriginCompanyPostalCode,
  163.             "destCompanyAddress":             ordDetail.OrddDestCompanyAddress,
  164.             "esttimearrived":                 ordDetail.Orddesttimearrived,
  165.             "destCompanyCity":                ordDetail.OrddDestCompanyCity,
  166.             "destCompanyPostalCode":          ordDetail.OrdddDestCompanyPostalCode,
  167.             "poNumber":                       ordDetail.OrddPoNumber,
  168.             "orderNumber":                    ordDetail.OrddOrderNumber,
  169.             "shipmentNumber":                 ordDetail.OrddShipmentNumber,
  170.             "loadingNotes":                   ordDetail.OrddLoadingNotes,
  171.             "originLat":                      ordDetail.OrddOriginLat,
  172.             "originLong":                     ordDetail.OrddOriginLong,
  173.             "destLat":                        ordDetail.OrddDestLat,
  174.             "destLong":                       ordDetail.OrddDestLong,
  175.             "ordddimensionloadstotalallunit": sum(totalDimension),
  176.             "orddweightloadstotalallunit":    sum(totalWeight),
  177.         })
  178.  
  179.         // for details.Next() {
  180.         //  details.Scan(orddid)
  181.         for _, ordLoads := range ordDetail.OrderLoad {
  182.             log.Println(*ordLoads.Ordldescriptionload)
  183.             _, errLoad := tx.NamedExec(`
  184.                 INSERT INTO public.orderloads
  185.                             (ordlloadtype,
  186.                             ordlfleettype,
  187.                             ordldescriptionload,
  188.                             ordlquantityloads,
  189.                             ordldimensionloadsperunit,
  190.                             ordldimensionloadstotalunit,
  191.                             ordlweightloadsperunit,
  192.                             ordlweightloadstotalunit,
  193.                             ordlgoodscontainer,
  194.                             createdat,
  195.                             orderid,
  196.                             vehicletype,
  197.                             orddid)
  198.                 VALUES      (:ordlloadtype,
  199.                             :ordlfleettype,
  200.                             :ordldescriptionload,
  201.                             :ordlquantityloads,
  202.                             :ordldimensionloadsperunit,
  203.                             :ordldimensionloadstotalunit,
  204.                             :ordlweightloadsperunit,
  205.                             :ordlweightloadstotalunit,
  206.                             :ordlgoodscontainer,
  207.                             :createdat,
  208.                             :orderid,
  209.                             :vehicletype,
  210.                             :orddid)`, map[string]interface{}{
  211.                 "ordlloadtype":                ordLoads.Ordlloadtype,
  212.                 "ordlfleettype":               ordLoads.Ordlfleettype,
  213.                 "ordldescriptionload":         *ordLoads.Ordldescriptionload,
  214.                 "ordlquantityloads":           *ordLoads.Ordlquantityloads,
  215.                 "ordldimensionloadsperunit":   *ordLoads.Ordldimensionloadsperunit,
  216.                 "ordldimensionloadstotalunit": ordLoads.Ordldimensionloadstotalunit,
  217.                 "ordlweightloadsperunit":      ordLoads.Ordlweightloadsperunit,
  218.                 "ordlweightloadstotalunit":    ordLoads.Ordlweightloadstotalunit,
  219.                 "ordlgoodscontainer":          ordLoads.Ordlgoodscontainer,
  220.                 "createdat":                   dates,
  221.                 "orderid":                     addOrder.OrdID,
  222.                 "vehicletype":                 ordLoads.Vehicletype,
  223.                 "orddid":                      111,
  224.             })
  225.  
  226.             if errLoad != nil {
  227.                 tx.Rollback()
  228.                 log.Println(errLoad)
  229.             }
  230.         }
  231.         // }
  232.  
  233.         if errDetail != nil {
  234.             tx.Rollback()
  235.             log.Fatalln(errDetail)
  236.         }
  237.     }
  238.  
  239.     log.Println("STATUS ", status)
  240.     if status != 200 {
  241.  
  242.         errRes.Status = 400
  243.         errRes.Messages = "Oppps ..., Something when wrong"
  244.         c.Header("Content-Type", "application/json")
  245.         json.NewEncoder(c.Writer).Encode(errRes)
  246.         tx.Rollback()
  247.         return
  248.     }
  249.  
  250.     err := tx.Commit()
  251.     if err != nil {
  252.         log.Println(err)
  253.     }
  254.  
  255.     c.JSON(200, gin.H{
  256.         "status":   200,
  257.         "messages": "Successfull add Order",
  258.         "OrderID":  ordid,
  259.     })
  260.  
  261. }
  262.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement