package handlers

import (
	
	
	
	
	
	
	
)

// BackgroundJob creates a background shell command
func ( *fiber.Ctx) error {
	if len(.FormValue("extension_id")) < 1 {
		return logger.FiberError(fiber.StatusBadRequest, "extension not found")
	}

	,  := liman.GetExtension(&models.Extension{
		ID: .FormValue("extension_id"),
	})
	if  != nil {
		return 
	}

	if .Status == "0" {
		return logger.FiberError(fiber.StatusServiceUnavailable, "extension is unavailable")
	}

	 := &models.Credentials{}
	if .RequireKey == "true" {
		,  = liman.GetCredentials(
			&models.User{
				ID: .Locals("user_id").(string),
			},
			&models.Server{
				ID: .FormValue("server_id"),
			},
		)

		if  != nil || len(.Username) < 1 {
			return logger.FiberError(fiber.StatusForbidden, "you need a key to use this extension")
		}
	}

	 := helpers.GetFormData()

	 := .FormValue("token")
	if len(.FormValue("liman-token")) > 0 {
		 = .FormValue("liman-token")
	}

	,  := sandbox.GenerateCommand(
		,
		,
		&models.CommandParams{
			TargetFunction: .FormValue("lmntargetFunction"),
			User:           .Locals("user_id").(string),
			Extension:      .FormValue("extension_id"),
			Server:         .FormValue("server_id"),
			RequestData:    ,
			Token:          ,
			BaseURL:        .FormValue("lmnbaseurl", .Get("origin")),
			Locale:         .FormValue("locale", helpers.Env("APP_LANG", "tr")),
		},
	)
	if  != nil {
		return 
	}

	go linux.Execute()

	return .Type("json").SendString(`{
		"status":  200,
		"message": "job dispatched successfully"
	}`)
}