initial commit 2
This commit is contained in:
254
application/entitymapping/ride.go
Normal file
254
application/entitymapping/ride.go
Normal file
@@ -0,0 +1,254 @@
|
||||
package entitymapping
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
||||
"bitbucket.org/nemt/nemt-portal-api/domain/entity"
|
||||
)
|
||||
|
||||
// rideMapping has method to map ride entities to view models
|
||||
type rideMapping struct {
|
||||
mapper *Mapper
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideModel(item entity.Ride) viewmodel.Ride {
|
||||
return viewmodel.Ride{
|
||||
User: mapping.mapper.User.ToUserModel(item.User),
|
||||
Status: mapping.ToRideStatusModel(item.Status),
|
||||
Type: mapping.ToRideTypeModel(item.Type),
|
||||
UUID: item.UUID,
|
||||
Note: item.Note,
|
||||
Driver: mapping.ToDriverUserModel(item.Driver),
|
||||
Passenger: mapping.ToPassengerUserModel(item.Passenger),
|
||||
Vehicle: mapping.ToVehicleModel(item.Vehicle),
|
||||
Route: mapping.ToRouteModel(item.Route),
|
||||
PickupTime: item.PickupTime,
|
||||
VisitDate: item.VisitDate,
|
||||
VisitTime: item.VisitTime,
|
||||
InternalID: item.InternalID,
|
||||
Visit: mapping.mapper.Visit.ToVisitModel(item.Visit),
|
||||
CreatedUser: mapping.mapper.User.ToUserModel(item.CreatedUser),
|
||||
CreateAt: item.Created,
|
||||
UpdateAt: item.Updated,
|
||||
TripType: mapping.mapper.Visit.ToTripTypeModel(item.TripType),
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideInternalEntity(item viewmodel.Ride) entity.Ride {
|
||||
return entity.Ride{
|
||||
User: mapping.mapper.User.ToUserEntity(item.User),
|
||||
UUID: item.UUID,
|
||||
Note: item.Note,
|
||||
PickupTime: item.PickupTime,
|
||||
VisitDate: item.VisitDate,
|
||||
VisitTime: item.VisitTime,
|
||||
InternalID: item.InternalID,
|
||||
TripType: mapping.mapper.Visit.ToTripTypeEntity(item.TripType),
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRouteModel(item entity.RideRoute) viewmodel.RideRoute {
|
||||
return viewmodel.RideRoute{
|
||||
Origin: mapping.ToLocationModel(item.Origin),
|
||||
Destination: mapping.ToLocationModel(item.Destination),
|
||||
RouteKML: item.RouteKML,
|
||||
ETA: item.ETA,
|
||||
Distance: item.Distance,
|
||||
Duration: item.Duration,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToLocationModel(item entity.Location) viewmodel.Location {
|
||||
return viewmodel.Location{
|
||||
ID: item.ID,
|
||||
Name: item.Name,
|
||||
Address: item.Address,
|
||||
Latitude: item.Latitude,
|
||||
Longitude: item.Longitude,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToVehicleModel(item entity.RideVehicle) viewmodel.Vehicle {
|
||||
return viewmodel.Vehicle{
|
||||
Color: item.Color,
|
||||
Make: item.Make,
|
||||
LicensePlate: item.LicensePlate,
|
||||
ImageURL: item.ImageURL,
|
||||
Year: item.Year,
|
||||
LicensePlateState: item.LicensePlateState,
|
||||
Model: item.Model,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToDriverUserModel(item entity.RideDriver) viewmodel.UserLyft {
|
||||
return viewmodel.UserLyft{
|
||||
FirstName: item.Name,
|
||||
ImageURL: item.ImageURL,
|
||||
PhoneNumber: item.PhoneNumber,
|
||||
Rating: item.Rating,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToPassengerUserModel(item entity.RidePassenger) viewmodel.UserLyft {
|
||||
return viewmodel.UserLyft{
|
||||
FirstName: item.FirstName,
|
||||
LastName: item.LastName,
|
||||
ImageURL: item.ImageURL,
|
||||
PhoneNumber: item.PhoneNumber,
|
||||
UserID: item.InternalID,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideStatusModel(item entity.RideStatus) viewmodel.RideStatus {
|
||||
return viewmodel.RideStatus{
|
||||
Value: item.Value,
|
||||
Key: item.Key,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideTypeModel(item entity.RideType) viewmodel.RideType {
|
||||
return viewmodel.RideType{
|
||||
Value: item.Value,
|
||||
Key: item.Key,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToWebhookEntity(item viewmodel.WebhookResponse) entity.WebhookResponse {
|
||||
occurredAt, _ := time.Parse(time.RFC3339Nano, item.OccurredAt)
|
||||
|
||||
return entity.WebhookResponse{
|
||||
EventID: item.EventID,
|
||||
HREF: item.HREF,
|
||||
OccurredAt: occurredAt,
|
||||
EventType: item.EventType,
|
||||
Ride: mapping.ToRideEntity(item.Event),
|
||||
}
|
||||
}
|
||||
|
||||
// ToUserModel maps a User entity to User view model
|
||||
func (mapping *rideMapping) ToRideEntity(item viewmodel.RideRequest) entity.Ride {
|
||||
return entity.Ride{
|
||||
User: entity.User{
|
||||
UUID: item.UserUUID,
|
||||
},
|
||||
Status: mapping.ToRideStatusEntity(item),
|
||||
Type: mapping.ToRideTypeEntity(item),
|
||||
InternalID: item.RideID,
|
||||
RequestDate: item.RequestAt,
|
||||
RequestMiliseconds: item.RequestAtMS,
|
||||
GenerateDate: item.GeneratedAt,
|
||||
GenerateMiliseconds: item.GeneratedAtMS,
|
||||
Note: item.Notes,
|
||||
PrimetimePercentage: item.PrimetimePercentage,
|
||||
Passenger: mapping.ToRidePassengerEntity(item),
|
||||
Driver: mapping.ToRideDriverEntity(item),
|
||||
Vehicle: mapping.ToRideVehicleEntity(item),
|
||||
Route: mapping.ToRideRouteEntity(item),
|
||||
PickupTime: item.PickupTime,
|
||||
VisitDate: item.VisitDate,
|
||||
VisitTime: item.VisitTime,
|
||||
Visit: mapping.mapper.Visit.ToVisitEntity(item.Visit),
|
||||
TripType: mapping.mapper.Visit.ToTripTypeEntity(item.TripType),
|
||||
CreatedUser: entity.User{
|
||||
UUID: item.CreateUserUUID,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideRouteEntity(item viewmodel.RideRequest) entity.RideRoute {
|
||||
return entity.RideRoute{
|
||||
Origin: mapping.ToLocationEntity(item.Origin),
|
||||
Destination: mapping.ToLocationEntity(item.Destination),
|
||||
RouteKML: &item.RouteURL,
|
||||
ETA: item.ETA,
|
||||
Distance: item.Distance,
|
||||
Duration: item.Duration,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToLocationEntity(item viewmodel.Location) entity.Location {
|
||||
return entity.Location{
|
||||
ID: item.ID,
|
||||
Name: item.Name,
|
||||
Address: item.Address,
|
||||
Latitude: item.Latitude,
|
||||
Longitude: item.Longitude,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideVehicleEntity(item viewmodel.RideRequest) entity.RideVehicle {
|
||||
return entity.RideVehicle{
|
||||
Color: item.Vehicle.Color,
|
||||
Make: item.Vehicle.Make,
|
||||
LicensePlate: item.Vehicle.LicensePlate,
|
||||
LicensePlateState: item.Vehicle.LicensePlateState,
|
||||
ImageURL: item.Vehicle.ImageURL,
|
||||
Model: item.Vehicle.Model,
|
||||
Year: item.Vehicle.Year,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideDriverEntity(item viewmodel.RideRequest) entity.RideDriver {
|
||||
return entity.RideDriver{
|
||||
Name: item.Driver.FirstName,
|
||||
ImageURL: item.Driver.ImageURL,
|
||||
PhoneNumber: item.Driver.PhoneNumber,
|
||||
Rating: item.Driver.Rating,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRidePassengerEntity(item viewmodel.RideRequest) entity.RidePassenger {
|
||||
return entity.RidePassenger{
|
||||
FirstName: item.Passenger.FirstName,
|
||||
LastName: item.Passenger.LastName,
|
||||
ImageURL: item.Passenger.ImageURL,
|
||||
PhoneNumber: item.Passenger.PhoneNumber,
|
||||
InternalID: item.Passenger.UserID,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideStatusEntity(item viewmodel.RideRequest) entity.RideStatus {
|
||||
return entity.RideStatus{
|
||||
Key: item.Status,
|
||||
}
|
||||
}
|
||||
|
||||
func (mapping *rideMapping) ToRideTypeEntity(item viewmodel.RideRequest) entity.RideType {
|
||||
return entity.RideType{
|
||||
Key: item.RideType,
|
||||
}
|
||||
}
|
||||
|
||||
// ToUserEntitySlice maps a User entity slice to User view model slice
|
||||
func (mapping *rideMapping) ToRideEntitySlice(list []viewmodel.RideRequest) (retVal []entity.Ride) {
|
||||
retVal = make([]entity.Ride, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToRideEntity(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToUserEntitySlice maps a User entity slice to User view model slice
|
||||
func (mapping *rideMapping) ToRideInternalEntitySlice(list []viewmodel.Ride) (retVal []entity.Ride) {
|
||||
retVal = make([]entity.Ride, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToRideInternalEntity(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
|
||||
// ToRideModelSlice maps a Ride entity slice to Ride view model slice
|
||||
func (mapping *rideMapping) ToRideModelSlice(list []entity.Ride) (retVal []viewmodel.Ride) {
|
||||
retVal = make([]viewmodel.Ride, 0)
|
||||
|
||||
for _, item := range list {
|
||||
retVal = append(retVal, mapping.ToRideModel(item))
|
||||
}
|
||||
|
||||
return retVal
|
||||
}
|
||||
Reference in New Issue
Block a user