Untitled

 avatar
unknown
plain_text
a year ago
1.4 kB
7
Indexable
// src/sequelize/models/commande.model.js
import { Model, DataTypes } from 'sequelize';
import db from './index.js';
import User from './user.model.js';

class Commande extends Model {
  calculateTotalPrice() {
    return this.CommandeDetails.reduce((total, detail) => {
      const price = detail.price * detail.quantity;
      const discount = price * (detail.promotionValue / 100);
      return total + (price - discount);
    }, 0);
  }
}

Commande.init({
  id: {
    type: DataTypes.UUID,
    defaultValue: DataTypes.UUIDV7,
    primaryKey: true
  },
  userId: {
    type: DataTypes.UUID,
    references: {
      model: User,
      key: 'id'
    }
  },
  isPaid: {
    type: DataTypes.BOOLEAN,
    defaultValue: false
  },
  paymentFailedMessage: {
    type: DataTypes.STRING,
    allowNull: true
  },
  deliveryStatus: {
    type: DataTypes.ENUM('processing', 'shipping', 'delivered', 'delivery_issue'),
    defaultValue: 'processing'
  },
  createdAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  },
  updatedAt: {
    type: DataTypes.DATE,
    allowNull: false,
    defaultValue: DataTypes.NOW
  }
}, {
  sequelize: db.sequelize,
  modelName: 'Commande',
  underscored: true
});

Commande.belongsTo(User);
User.hasMany(Commande);

export default Commande;
Editor is loading...
Leave a Comment