import { ChargeType } from "src/modules/charges-type/entities/charges-type.entity"
import { City } from "src/modules/city/entities/city.entity"
import { Plan } from "src/modules/plans/entities/plan.entity"
import { TripType } from "src/modules/trips/entities/trip-type.entity"
import {
  Column,
  CreateDateColumn,
  DeleteDateColumn,
  Entity,
  JoinColumn,
  ManyToOne,
  PrimaryGeneratedColumn,
  UpdateDateColumn,
} from "typeorm"

@Entity("service_pricing")
export class ServicePricing {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ type: "int" })
  plan_id: number

  @Column({ type: "int" })
  charge_type_id: number

  @Column({ type: "int", nullable: true })
  city_id: number

  @Column({ type: "int" })
  service_type_id: number

  @Column({ type: "varchar" })
  price: number

  @CreateDateColumn({ type: "timestamp" })
  created_at: Date

  @UpdateDateColumn({ type: "timestamp" })
  updated_at: Date

  @DeleteDateColumn({ type: "timestamp", nullable: true })
  deleted_at?: Date

  @ManyToOne(() => Plan, (plan) => plan.service_pricing)
  @JoinColumn({ name: "plan_id" })
  plan: Plan

  @ManyToOne(() => ChargeType, (charge_type) => charge_type.service_pricing)
  @JoinColumn({ name: "charge_type_id" })
  charge_type: ChargeType

  @ManyToOne(() => City, (city) => city.service_pricing)
  @JoinColumn({ name: "city_id" })
  city: City

  @ManyToOne(() => TripType, (service_type) => service_type.service_pricing)
  @JoinColumn({ name: "service_type_id" })
  service_type: TripType
}
