package visitroute import ( "sync" "bitbucket.org/nemt/nemt-portal-api/application/applicationservice" "bitbucket.org/nemt/nemt-portal-api/infra/auth" "bitbucket.org/nemt/nemt-portal-api/infra/config" "bitbucket.org/nemt/nemt-portal-api/server/router/routeutils" "github.com/labstack/echo" ) var ( instance *controller once sync.Once ) type controller struct { svc *applicationservice.Service cfg *config.Config } func controllerInstance(svc *applicationservice.Service, cfg *config.Config) *controller { once.Do(func() { instance = &controller{ svc: svc, cfg: cfg, } }) return instance } func (c *controller) handleGetByID(ctx echo.Context) error { visit_uuid := ctx.Param("visit_uuid") if visit_uuid == "" { return routeutils.ResponseAPIValidationError(ctx, "visit_uuid param is mandatory") } user, err := auth.GetUserDetail(ctx, c.cfg) if err != nil { return routeutils.HandleAPIError(ctx, err) } resp, err := c.svc.Visits.GetByUUID(visit_uuid, user) if err != nil { return routeutils.HandleAPIError(ctx, err) } return routeutils.ResponseAPIOK(ctx, resp) } func (c *controller) handleGetAll(ctx echo.Context) error { user, err := auth.GetUserDetail(ctx, c.cfg) if err != nil { return routeutils.HandleAPIError(ctx, err) } resp, err := c.svc.Visits.GetAll(user) if err != nil { return routeutils.HandleAPIError(ctx, err) } return routeutils.ResponseAPIOK(ctx, resp) }