public static Model.ConnectionInfo FromDataModel(Core.Data.ConnectionInfo s, bool isVerboseMode, Model.CoreReferenceData refData) { if (s == null) { return(null); } var connectionInfo = new Model.ConnectionInfo() { ID = s.Id, Reference = s.Reference, Amps = s.Amps, Voltage = s.Voltage, PowerKW = s.PowerKw, Quantity = s.Quantity, Comments = s.Comments }; //connection type (full object or id only) connectionInfo.ConnectionTypeID = s.ConnectionTypeId; if (isVerboseMode) { connectionInfo.ConnectionType = refData.ConnectionTypes.FirstOrDefault(c => c.ID == s.ConnectionTypeId); } //status type (full object or id only) connectionInfo.StatusTypeID = s.StatusTypeId; if (isVerboseMode) { connectionInfo.StatusType = refData.StatusTypes.FirstOrDefault(i => i.ID == s.StatusTypeId); } connectionInfo.CurrentTypeID = s.CurrentTypeId; if (isVerboseMode) { connectionInfo.CurrentType = refData.CurrentTypes.FirstOrDefault(i => i.ID == connectionInfo.CurrentTypeID); } // if PowerKW not manually supplied, attempt to compute it if (connectionInfo.PowerKW == null || connectionInfo.PowerKW == 0) { connectionInfo.PowerKW = ConnectionInfo.ComputePowerkW(connectionInfo); } // determine legacy charging 'level' (SAE definition) based on kw/voltage if available // if can't be computed use existing user supplied value (if any) connectionInfo.LevelID = ComputeChargingLevel(connectionInfo); if (connectionInfo.LevelID == null) { connectionInfo.LevelID = s.LevelTypeId; } if (isVerboseMode) { connectionInfo.Level = refData.ChargerTypes.FirstOrDefault(i => i.ID == connectionInfo.LevelID); } return(connectionInfo); }
public static Model.ChargePoint FromDataModel(Core.Data.ChargePoint source, bool loadUserComments, bool loadMediaItems, bool loadMetadataValues, bool isVerboseMode, Model.CoreReferenceData refData) { if (source == null) { return(null); } var poi = new Model.ChargePoint(); poi.ID = source.Id; poi.UUID = source.Uuid; //populate data provider info (full object or id only) if (isVerboseMode && source.DataProvider != null) { poi.DataProvider = DataProvider.FromDataModel(source.DataProvider); poi.DataProviderID = source.DataProvider.Id; } else { poi.DataProviderID = source.DataProviderId; } poi.DataProvidersReference = source.DataProvidersReference; //populate Operator (full object or id only) if (isVerboseMode && (source.OperatorId != null || source.Operator != null)) { poi.OperatorInfo = OperatorInfo.FromDataModel(source.Operator); poi.OperatorID = source.Operator.Id; } else { poi.OperatorID = source.OperatorId; } poi.OperatorsReference = source.OperatorsReference; //populate usage type (full object or id only) if (isVerboseMode && (source.UsageTypeId != null || source.UsageType != null)) { poi.UsageType = UsageType.FromDataModel(source.UsageType); poi.UsageTypeID = source.UsageType.Id; } else { poi.UsageTypeID = source.UsageTypeId; } poi.UsageCost = source.UsageCost; //populate address info if (source.AddressInfoId != null || source.AddressInfo != null) { poi.AddressInfo = AddressInfo.FromDataModel(source.AddressInfo, isVerboseMode); } poi.NumberOfPoints = source.NumberOfPoints; poi.GeneralComments = source.GeneralComments; poi.DatePlanned = source.DatePlanned; poi.DateLastConfirmed = source.DateLastConfirmed; //populate status type (full object or id only) if (isVerboseMode && (source.StatusTypeId != null || source.StatusType != null)) { poi.StatusType = StatusType.FromDataModel(source.StatusType); poi.StatusTypeID = source.StatusType.Id; } else { poi.StatusTypeID = source.StatusTypeId; } poi.DateLastStatusUpdate = source.DateLastStatusUpdate; poi.DataQualityLevel = source.DataQualityLevel; poi.DateCreated = source.DateCreated; //populate submission status type (full object or id only) if (isVerboseMode && (source.SubmissionStatusTypeId != null || source.SubmissionStatusType != null)) { poi.SubmissionStatus = SubmissionStatusType.FromDataModel(source.SubmissionStatusType); poi.SubmissionStatusTypeID = source.SubmissionStatusType.Id; } else { poi.SubmissionStatusTypeID = source.SubmissionStatusTypeId; } poi.Connections = new List <Model.ConnectionInfo>(); foreach (var conn in source.ConnectionInfoes) { poi.Connections.Add(ConnectionInfo.FromDataModel(conn, isVerboseMode, refData)); } //loadUserComments = true; //loadMetadataValues = true; //loadMediaItems = true; //optionally load user comments if (loadUserComments) { foreach (var comment in source.UserComments.OrderByDescending(cm => cm.DateCreated)) { if (poi.UserComments == null) { poi.UserComments = new List <Model.UserComment>(); } Model.UserComment com = UserComment.FromDataModel(comment, isVerboseMode); poi.UserComments.Add(com); } } if (loadMediaItems) { foreach (var mediaItem in source.MediaItems.OrderByDescending(cm => cm.DateCreated)) { if (poi.MediaItems == null) { poi.MediaItems = new List <Model.MediaItem>(); } poi.MediaItems.Add(MediaItem.FromDataModel(mediaItem)); } } if (loadMetadataValues) { foreach (var metadataValue in source.MetadataValues) { if (poi.MetadataValues == null) { poi.MetadataValues = new List <Model.MetadataValue>(); } poi.MetadataValues.Add(MetadataValue.FromDataModel(metadataValue)); } } //mapping level of detail (priority level, lower is higher priority) poi.LevelOfDetail = source.LevelOfDetail; return(poi); }
public static Model.ChargePoint FromDataModel(Core.Data.ChargePoint source, Model.CoreReferenceData refData) { return(FromDataModel(source, false, false, false, true, refData)); }
public static Model.UserComment FromDataModel(Core.Data.UserComment source, bool isVerboseMode, Model.CoreReferenceData refData = null) { var userComment = new Model.UserComment { ID = source.Id, Comment = source.Comment, Rating = source.Rating, RelatedURL = source.RelatedUrl, DateCreated = source.DateCreated, ChargePointID = source.ChargePointId, User = User.BasicFromDataModel(source.User), IsActionedByEditor = source.IsActionedByEditor }; if (isVerboseMode && refData != null) { userComment.CommentType = refData?.UserCommentTypes.FirstOrDefault(i => i.ID == source.UserCommentTypeId) ?? UserCommentType.FromDataModel(source.UserCommentType); userComment.CommentTypeID = source.UserCommentTypeId; } else { userComment.CommentTypeID = source.UserCommentTypeId; } if (isVerboseMode && (refData != null || source.CheckinStatusType != null) && source.CheckinStatusTypeId != null) { userComment.CheckinStatusType = refData?.CheckinStatusTypes.FirstOrDefault(i => i.ID == source.CheckinStatusTypeId) ?? CheckinStatusType.FromDataModel(source.CheckinStatusType); userComment.CheckinStatusTypeID = source.CheckinStatusTypeId; } else { userComment.CheckinStatusTypeID = source.CheckinStatusTypeId; } if (userComment.User != null) { userComment.UserName = userComment.User.Username; } else { userComment.UserName = source.UserName; } return(userComment); }