Files
shop-api/src/modules/payment/models/payments.model.ts
T
morteza 8e5e20320d
Build and Deploy / build_and_deploy (push) Has been cancelled
payment on deleivery
2026-07-09 10:44:26 +03:30

62 lines
2.4 KiB
TypeScript

import { Schema, model } from "mongoose";
import { ICartPayment, IPRPriceDetails, IPriceDetails, IProductRequestPayment } from "./Abstraction/IPayments";
import { PaymentStatus } from "../../../common/enums/order.enum";
const PaymentPriceDetails = new Schema<IPriceDetails>(
{
shipping_cost: { type: Number, required: true },
shipping_cost_on_delivery: { type: Number, default: 0 },
process_cost: { type: Number, required: true },
total_retail_price: { type: Number, required: true },
total_discount: { type: Number, default: 0 },
coupon_discount: { type: Number, default: 0 },
total_payable_price: { type: Number, required: true },
},
{ _id: false },
);
const CartPaymentSchema = new Schema<ICartPayment>(
{
user_id: { type: Schema.Types.ObjectId, ref: "User", required: true },
authority: { type: String, required: true },
transaction_id: { type: String, default: null },
payment_method: { type: Schema.Types.ObjectId, ref: "PaymentMethod", required: true },
priceDetails: { type: PaymentPriceDetails, required: true },
totalPrice: { type: Number, required: true },
paymentStatus: { type: String, enum: PaymentStatus, default: PaymentStatus.Pending },
},
{ timestamps: true, toJSON: { versionKey: false }, id: false },
);
const CartPaymentModel = model<ICartPayment>("CartPayment", CartPaymentSchema);
//=======================================> product request payment
const PRPriceDetailSchema = new Schema<IPRPriceDetails>(
{
insertion_price: { type: Number, required: true },
unboxing_price: { type: Number, required: true },
photography_price: { type: Number, required: true },
expertReviews_price: { type: Number, required: true },
},
{
_id: false,
},
);
const PRPaymentSchema = new Schema<IProductRequestPayment>(
{
seller_id: { type: Schema.Types.ObjectId, ref: "Seller", required: true },
authority: { type: String, required: true },
transaction_id: { type: String, default: null },
payment_method: { type: Schema.Types.ObjectId, ref: "PaymentMethod", required: true },
priceDetails: { type: PRPriceDetailSchema },
totalPrice: { type: Number, required: true },
paymentStatus: { type: String, enum: PaymentStatus, default: PaymentStatus.Pending },
},
{ timestamps: true, toJSON: { versionKey: false }, id: false },
);
const PRPaymentModel = model<IProductRequestPayment>("PRPayment", PRPaymentSchema);
export { CartPaymentModel, PRPaymentModel };