package main

import (
	"github.com/gin-gonic/gin"
	"lims-extend/controller"
	"lims-extend/tools"
)

func CollectRoute(r *gin.Engine) *gin.Engine {

	plan := r.Group("/api/v-go/plan")
	//plan.Use(middleware.AuthMiddleware())
	{
		plan.GET("lists/:userId", controller.ShowPlans)
		plan.GET(":planId/:userId", controller.ShowPlan)
		plan.POST("take/:planId/:username", controller.TakePlan)
		plan.POST("assign", controller.AssignPlan)
		plan.GET("assign/:planId", controller.GetPlanAssignedGroups)
		plan.GET("test", controller.Test)
	}

	task := r.Group("/api/v-go/task")
	{
		task.POST("take/:taskId", controller.TakeTask)
		task.GET("lists", controller.ShowTasks)
	}

	software := r.Group("/api/v-go/software")
	{
		software.GET("lists/:userId", controller.ShowRelatedSoftwares)
		software.GET("report/:softwareId", controller.GetReportDownloadLink)

	}
	user := r.Group("/api/v-go/user")
	{
		user.GET("infoSender/:userId", controller.GetStatisticsInfoForAdmin)
		user.GET("infoReceiver/:userId", controller.GetStatisticsInfoForUser)
		user.GET("infoAdmin", controller.GetStatisticsInfoForSuperAdmin)
		user.GET("isJoinedCompany/:userId", controller.IsJoinedCompany)
		user.GET("companyInfo/:userId", controller.GetCompanyOfUser)
		user.GET("lists", controller.GetUsers)
	}

	company := r.Group("/api/v-go/company")
	{
		company.POST("createRequest/submit", controller.SubmitCompanyCreateRequest)
		company.GET("createRequest/:creator_id", controller.GetCompanyCreateRequest)
		company.GET("createRequest/lists", controller.GetCompanyCreateRequestsList)
		company.PUT("createRequest/reject/:request_id", controller.RejectCompanyCreateRequest)
		company.POST("createRequest/accept/:request_id", controller.AcceptCompanyCreateRequest)
		company.DELETE("createRequest/confirmReject/:request_id", controller.ConfirmRejectCompanyCreateRequest)
		company.POST("applyRequest/join", controller.ApplyJoinCompany)
		company.PUT("applyRequest/accept/:userId", controller.AcceptJoinCompany)
		company.PUT("applyRequest/reject/:userId", controller.RejectJoinCompany)
		company.GET("applyRequest/lists/:companyId", controller.GetJoinCompanyRequests)
		company.DELETE("member/delete/:userId", controller.DelCompanyMember)
		company.GET("members/:companyId", controller.GetCompanyMembers)
		company.DELETE("applyRequest/confirmReject/:userId", controller.ConfirmRejectInfo)
		company.GET("lists", controller.GetCompanyStatisticsList)
		company.GET("statistic/:companyId", controller.GetCompanyStatistics)
	}
	file := r.Group("files")
	{
		file.GET(":fileType/:fileName", controller.OfferFile)
	}
	_tools := r.Group("tools")
	{
		_tools.POST("modifyTime", tools.ModifyTime)
	}

	return r
}