add update restrictions
This commit is contained in:
parent
5ff557c2c2
commit
db372231ff
@ -47,6 +47,10 @@ func (p *PromoCodeController) EditPromoCode(c *fiber.Ctx) error {
|
|||||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if reqEditPromoCode.ID == "" {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "promocode ID is required"})
|
||||||
|
}
|
||||||
|
|
||||||
editedPromoCode, err := p.promoCodeService.EditPromoCode(c.Context(), &reqEditPromoCode)
|
editedPromoCode, err := p.promoCodeService.EditPromoCode(c.Context(), &reqEditPromoCode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.logger.Error("Failed to edit promocode", zap.Error(err))
|
p.logger.Error("Failed to edit promocode", zap.Error(err))
|
||||||
|
@ -31,12 +31,12 @@ type PromoCode struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ReqEditPromoCode struct {
|
type ReqEditPromoCode struct {
|
||||||
ID string `json:"id" bson:"_id"` //айдишник промокода, который обновляем
|
ID string `json:"id" bson:"_id"` //айдишник промокода, который обновляем
|
||||||
Description string `json:"description" bson:"description"` // описание, необходимое менеджеру в админке
|
Description *string `json:"description,omitempty" bson:"description"` // описание, необходимое менеджеру в админке
|
||||||
Greetings string `json:"greetings" bson:"greetings"` // текст, выдаваемый пользователю в ответ на активацию промокода
|
Greetings *string `json:"greetings,omitempty" bson:"greetings"` // текст, выдаваемый пользователю в ответ на активацию промокода
|
||||||
|
|
||||||
DueTo int64 `json:"dueTo" bson:"dueTo"` // таймштамп времени окончания работы активации промокода
|
DueTo *int64 `json:"dueTo,omitempty" bson:"dueTo"` // таймштамп времени окончания работы активации промокода
|
||||||
ActivationCount int64 `json:"activationCount" bson:"activationCount"` // предел количества активаций промокода
|
ActivationCount *int64 `json:"activationCount,omitempty" bson:"activationCount"` // предел количества активаций промокода
|
||||||
|
|
||||||
Delete bool `json:"delete" bson:"delete"`
|
Delete *bool `json:"delete,omitempty" bson:"delete"`
|
||||||
}
|
}
|
||||||
|
@ -56,24 +56,35 @@ func (r *PromoCodeRepository) CreatePromoCode(ctx context.Context, promoCode *mo
|
|||||||
return promoCode, nil
|
return promoCode, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *PromoCodeRepository) EditPromoCode(ctx context.Context, EditPromoCode *models.ReqEditPromoCode) (*models.PromoCode, error) {
|
func (r *PromoCodeRepository) EditPromoCode(ctx context.Context, editPromoCode *models.ReqEditPromoCode) (*models.PromoCode, error) {
|
||||||
promoCodeID, err := primitive.ObjectIDFromHex(EditPromoCode.ID)
|
promoCodeID, err := primitive.ObjectIDFromHex(editPromoCode.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
filter := bson.M{"_id": promoCodeID}
|
updateFields := bson.M{}
|
||||||
update := bson.M{
|
if editPromoCode.Description != nil {
|
||||||
"$set": bson.M{
|
updateFields["description"] = *editPromoCode.Description
|
||||||
"description": EditPromoCode.Description,
|
}
|
||||||
"greetings": EditPromoCode.Greetings,
|
if editPromoCode.Greetings != nil {
|
||||||
"dueTo": EditPromoCode.DueTo,
|
updateFields["greetings"] = *editPromoCode.Greetings
|
||||||
"activationCount": EditPromoCode.ActivationCount,
|
}
|
||||||
"delete": EditPromoCode.Delete,
|
if editPromoCode.DueTo != nil {
|
||||||
},
|
updateFields["dueTo"] = *editPromoCode.DueTo
|
||||||
|
}
|
||||||
|
if editPromoCode.ActivationCount != nil {
|
||||||
|
updateFields["activationCount"] = *editPromoCode.ActivationCount
|
||||||
|
}
|
||||||
|
if editPromoCode.Delete != nil {
|
||||||
|
updateFields["delete"] = *editPromoCode.Delete
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := r.mdb.UpdateOne(ctx, filter, update)
|
if len(updateFields) == 0 {
|
||||||
|
return r.GetPromoCodeByID(ctx, promoCodeID)
|
||||||
|
}
|
||||||
|
|
||||||
|
update := bson.M{"$set": updateFields}
|
||||||
|
result, err := r.mdb.UpdateOne(ctx, bson.M{"_id": promoCodeID}, update)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user