Merge branch 'dev' into 'main'

Update service/service.go, dal/mongo/dal.go

See merge request external/heruvym!31
This commit is contained in:
Mikhail 2023-03-29 13:15:46 +00:00
commit c2f45d12d8
2 changed files with 34 additions and 16 deletions

@ -416,14 +416,14 @@ func (d *DAL) YieldTickets(ctx context.Context, limit int64) ([]model.Ticket, in
return result, col, nil return result, col, nil
} }
func (d *DAL) YieldUserTickets(ctx context.Context, userID string, limit int64) ([]model.Ticket, int64, error) { func (d *DAL) YieldUserTickets(ctx context.Context, userID string, limit, offset int64) ([]model.Ticket, int64, error) {
query := bson.M{ query := bson.M{
"UserID": userID, "UserID": userID,
} }
sort := bson.D{{"State", -1}, {"UpdatedAt", 1}} sort := bson.D{{"State", -1}, {"UpdatedAt", 1}}
cursor, err := d.colTck.Find(ctx, query, options.Find().SetSort(sort).SetLimit(limit)) cursor, err := d.colTck.Find(ctx, query, options.Find().SetSort(sort).SetLimit(limit).SetSkip(offset))
if err != nil { if err != nil {
return nil, 0, err return nil, 0, err
} }

@ -225,7 +225,7 @@ func (h *Heruvym) userTickets(ctx context.Context, userID string, output chan in
} }
}() }()
data, count, err := h.dal.YieldUserTickets(ctx, userID, 20) data, count, err := h.dal.YieldUserTickets(ctx, userID, 20, 0)
if err != nil { if err != nil {
output <- errors.New("cannot get tickets:" + err.Error()) output <- errors.New("cannot get tickets:" + err.Error())
@ -497,6 +497,10 @@ type GetTicketsResp struct {
func (h *Heruvym) GetTickets( func (h *Heruvym) GetTickets(
ctx context.Context, ctx context.Context,
request GetTicketsReq) (GetTicketsResp, int) { request GetTicketsReq) (GetTicketsResp, int) {
role := jwt_adapter.GetRole(ctx)
if role == "admin" {
result, count, err := h.dal.GetTicketPage(ctx, result, count, err := h.dal.GetTicketPage(ctx,
request.Status, request.Status,
request.Search, request.Search,
@ -511,6 +515,20 @@ func (h *Heruvym) GetTickets(
Data: *result, Data: *result,
Count: count, Count: count,
}, http.StatusOK }, http.StatusOK
} else {
sess := jwt_adapter.Get(ctx)
data, count, err := h.dal.YieldUserTickets(ctx, sess.Id, request.Amount, request.Page*request.Amount)
if err != nil {
return GetTicketsResp{}, http.StatusNoContent
}
return GetTicketsResp{
Data: *result,
Count: count,
}, http.StatusOK
}
} }
type GetMessagesReq struct { type GetMessagesReq struct {