func (handler AccountHandler) PutPostJSON(w http.ResponseWriter, r *http.Request, user *usecases.User, title *Title) *WebError { vars := mux.Vars(r) var err error account := new(domain.Account) if vars["id"] != "create" { id, _ := strconv.Atoi(vars["id"]) account, err = handler.AccountInteractor.FetchById(id, user.Id) if err != nil { log.Println(err) return nil } } rt, err := ParseJSONBody(r) if err != nil { log.Println(err) return nil } if name, ok := rt["Name"].(string); ok { account.Name = name } account.Type = InterfaceToInt(rt["Type"], 0) account.StartingAmount = InterfaceToInt64(rt["StartingAmount"], 0) account.Order = InterfaceToInt(rt["Order"], account.Order) if comment, ok := rt["Comment"].(string); ok { account.Comment = comment } if rt["CreditCard"] != nil { if card, ok := rt["CreditCard"].(map[string]interface{}); ok { if account.CreditCard == nil { account.CreditCard = new(domain.CreditCard) } account.CreditCard.LastDate = InterfaceToInt(card["LastDate"], 0) account.CreditCard.PayingMonth = InterfaceToInt(card["PayingMonth"], 0) account.CreditCard.PayingDay = InterfaceToInt(card["PayingDay"], 0) account.CreditCard.PayingAccount = InterfaceToInt(card["PayingAccount"], 0) account.CreditCard.Holiday = InterfaceToInt(card["Holiday"], 0) } } account.OwnerId = user.Id err = handler.AccountInteractor.Save(account) if err != nil { return &WebError{ Error: err, Code: 500, Message: "Error saving account", Json: true, } } return nil }