ui/offering.go
func (h *Handler) AcceptOffering(tkn string, account data.HexString,
	offering string, deposit, gasPrice uint64) (*string, error) {
	logger := h.logger.Add("method", "AcceptOffering",
		"account", account, "offering", offering,
		"deposit", deposit, "gasPrice", gasPrice)

	if !h.token.Check(tkn) {
		logger.Warn("access denied")
		return nil, ErrAccessDenied
	}

	var acc data.Account
	if err := h.findByColumn(logger, ErrAccountNotFound,
		&acc, "eth_addr", account); err != nil {
		return nil, err
	}

	offer, err := h.findActiveOfferingByID(logger, offering)
	if err != nil {
		return nil, err
	}

	minDeposit := data.MinDeposit(offer)

	if deposit == 0 {
		deposit = minDeposit
	} else if deposit < minDeposit {
		logger.Error(ErrDepositTooSmall.Error())
		return nil, ErrDepositTooSmall
	}

	if err := h.pingOffering(logger, offer); err != nil {
		return nil, err
	}

	rid := util.NewUUID()
	jobData := &worker.ClientPreChannelCreateData{Account: acc.ID,
		Offering: offering, GasPrice: gasPrice, Deposit: deposit}
	if err := job.AddWithData(h.queue, nil, data.JobClientPreChannelCreate,
		data.JobChannel, rid, data.JobUser, jobData); err != nil {
		logger.Error(err.Error())
		return nil, ErrInternal
	}

	return &rid, nil
}
func (h *Handler) AcceptOffering(tkn string, account data.HexString,
	offering string, deposit, gasPrice uint64) (*string, error) {
	logger := h.logger.Add("method", "AcceptOffering",
		"account", account, "offering", offering,
		"deposit", deposit, "gasPrice", gasPrice)

	if !h.token.Check(tkn) {
		logger.Warn("access denied")
		return nil, ErrAccessDenied
	}

	var acc data.Account
	if err := h.findByColumn(logger, ErrAccountNotFound,
		&acc, "eth_addr", account); err != nil {
		return nil, err
	}

	offer, err := h.findActiveOfferingByID(logger, offering)
	if err != nil {
		return nil, err
	}

	minDeposit := data.MinDeposit(offer)

	if deposit == 0 {
		deposit = minDeposit
	} else if deposit < minDeposit {
		logger.Error(ErrDepositTooSmall.Error())
		return nil, ErrDepositTooSmall
	}

	if err := h.pingOffering(logger, offer); err != nil {
		return nil, err
	}

	rid := util.NewUUID()
	jobData := &worker.ClientPreChannelCreateData{Account: acc.ID,
		Offering: offering, GasPrice: gasPrice, Deposit: deposit}
	if err := job.AddWithData(h.queue, nil, data.JobClientPreChannelCreate,
		data.JobChannel, rid, data.JobUser, jobData); err != nil {
		logger.Error(err.Error())
		return nil, ErrInternal
	}

	return &rid, nil
}
// AcceptOffering initiates JobClientPreChannelCreate job.