package transform

import (
	"github.com/UpmeshLTD/urus-aio/infrastructure/db/entities"
	"github.com/UpmeshLTD/urus-aio/shipment/server/http/dto"
)

func GetDeliveryPlansRequestDTOToEntity(req *dto.GetDeliveryPlansRequest, countryID int64) *entities.GetDeliveryPlansFilterParams {
	return &entities.GetDeliveryPlansFilterParams{
		Deactivate: req.Deactivate,
		CountryID:  countryID,
		CourierID:  req.CourierID,
	}
}

func GetDeliveryPlansResponseEntityToDTO(res []*entities.CourierDeliveryPlan) *dto.GetDeliveryPlansResponse {
	data := make([]*dto.DeliveryPlan, 0, len(res))
	for _, v := range res {
		data = append(data, DeliveryPlanEntityToDTO(v))
	}

	return &dto.GetDeliveryPlansResponse{
		Data: data,
	}
}

func CreateDeliveryPlanRequestDTOToEntity(req *dto.CreateDeliveryPlanRequest) *entities.CourierDeliveryPlan {
	return &entities.CourierDeliveryPlan{
		Name:           req.Name,
		EffectiveDate:  req.EffectiveDate,
		CountryID:      req.CountryID,
		CourierID:      req.CourierID,
		MinDeliveryDay: req.MinDeliveryDay,
		MaxDeliveryDay: req.MaxDeliveryDay,
		Deactivate:     req.Deactivate,
	}
}

func DeliveryPlanEntityToDTO(res *entities.CourierDeliveryPlan) *dto.DeliveryPlan {
	return &dto.DeliveryPlan{
		ID:             res.ID.ToInt64(),
		Name:           res.Name,
		Code:           res.Code,
		CountryID:      res.CountryID,
		CourierID:      res.CourierID,
		MinDeliveryDay: res.MinDeliveryDay,
		MaxDeliveryDay: res.MaxDeliveryDay,
		Deactivate:     res.Deactivate,
		EffectiveDate:  res.EffectiveDate,
	}
}

func UpdateDeliveryPlanRequestDTOToEntity(req *dto.UpdateDeliveryPlanRequest) *entities.CourierDeliveryPlan {
	return &entities.CourierDeliveryPlan{
		Name:           req.Name,
		EffectiveDate:  req.EffectiveDate,
		CountryID:      req.CountryID,
		CourierID:      req.CourierID,
		MinDeliveryDay: req.MinDeliveryDay,
		MaxDeliveryDay: req.MaxDeliveryDay,
		Deactivate:     req.Deactivate,
	}
}
