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
}
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{
"UserID": userID,
}
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 {
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 {
output <- errors.New("cannot get tickets:" + err.Error())
@ -497,20 +497,38 @@ type GetTicketsResp struct {
func (h *Heruvym) GetTickets(
ctx context.Context,
request GetTicketsReq) (GetTicketsResp, int) {
result, count, err := h.dal.GetTicketPage(ctx,
request.Status,
request.Search,
request.Amount,
request.Page,
)
if err != nil {
return GetTicketsResp{}, http.StatusNoContent
}
role := jwt_adapter.GetRole(ctx)
return GetTicketsResp{
Data: *result,
Count: count,
}, http.StatusOK
if role == "admin" {
result, count, err := h.dal.GetTicketPage(ctx,
request.Status,
request.Search,
request.Amount,
request.Page,
)
if err != nil {
return GetTicketsResp{}, http.StatusNoContent
}
return GetTicketsResp{
Data: *result,
Count: count,
}, 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 {