public DeliveryPointGroupDataDTO UpdateDeliveryGroup(DeliveryPointGroupDataDTO deliveryPointGroupDto) { using (loggingHelper.RMTraceManager.StartTrace($"DataService.{nameof(UpdateDeliveryGroup)}")) { //fetch all delivery point locations var existingDeliveryPointLocationRelationships = DataContext.LocationRelationships.Where(x => x.RelatedLocationID == deliveryPointGroupDto.DeliveryGroup.DeliveryPoint.ID); var deliveryPointToCentroidRelationTypeId = existingDeliveryPointLocationRelationships.First().RelationshipTypeGUID; DataContext.LocationRelationships.RemoveRange(existingDeliveryPointLocationRelationships); foreach (var addedDeliveryPoint in deliveryPointGroupDto.AddedDeliveryPoints) { LocationRelationship deliveryPointToCentroidRelation = new LocationRelationship(); deliveryPointToCentroidRelation.ID = Guid.NewGuid(); deliveryPointToCentroidRelation.LocationID = addedDeliveryPoint.ID; deliveryPointToCentroidRelation.RelatedLocationID = deliveryPointGroupDto.DeliveryGroup.DeliveryPoint.ID; deliveryPointToCentroidRelation.RelationshipTypeGUID = deliveryPointToCentroidRelationTypeId; deliveryPointToCentroidRelation.RowCreateDateTime = DateTime.UtcNow; DataContext.LocationRelationships.Add(deliveryPointToCentroidRelation); } // Update group boundary var groupBoundary = DataContext.Locations.Single(x => x.ID == deliveryPointGroupDto.GroupBoundary.ID); groupBoundary.Shape = deliveryPointGroupDto.GroupBoundary.Shape; // Update group details var existingGroupDetails = DataContext.SupportingDeliveryPoint.Single(x => x.ID == deliveryPointGroupDto.DeliveryGroup.ID); existingGroupDetails.GroupName = deliveryPointGroupDto.DeliveryGroup.GroupName; existingGroupDetails.DeliverToReception = deliveryPointGroupDto.DeliveryGroup.DeliverToReception; existingGroupDetails.GroupTypeGUID = deliveryPointGroupDto.DeliveryGroup.GroupTypeGUID; existingGroupDetails.NumberOfFloors = deliveryPointGroupDto.DeliveryGroup.NumberOfFloors; existingGroupDetails.InternalDistanceMeters = deliveryPointGroupDto.DeliveryGroup.InternalDistanceMeters; existingGroupDetails.WorkloadTimeOverrideMinutes = deliveryPointGroupDto.DeliveryGroup.WorkloadTimeOverrideMinutes; existingGroupDetails.TimeOverrideApproved = deliveryPointGroupDto.DeliveryGroup.TimeOverrideApproved; existingGroupDetails.TimeOverrideReason = deliveryPointGroupDto.DeliveryGroup.TimeOverrideReason; existingGroupDetails.ServicePointTypeGUID = deliveryPointGroupDto.DeliveryGroup.ServicePointTypeGUID; existingGroupDetails.RowCreateDateTime = DateTime.UtcNow; //update group centroid existingGroupDetails.DeliveryPoint.NetworkNode.Location.Shape = deliveryPointGroupDto.GroupBoundary.Shape.Centroid; DataContext.SaveChanges(); } return(deliveryPointGroupDto); }
/// <summary> /// This method is used to insert delivery point group. /// </summary> /// <param name="objDeliveryPoint">Delivery point dto as object</param> /// <returns>Unique identifier of delivery point.</returns> public bool CreateDeliveryGroup(DeliveryPointGroupDataDTO deliveryPointGroup) { bool isDeliveryPointGroupCreationSuccess = false; using (loggingHelper.RMTraceManager.StartTrace($"DataService.{nameof(CreateDeliveryGroup)}")) { string methodName = typeof(DeliveryPointGroupDataService) + "." + nameof(CreateDeliveryGroup); loggingHelper.LogMethodEntry(methodName, priority, entryEventId); if (deliveryPointGroup != null && deliveryPointGroup.AddedDeliveryPoints != null) { Location groupShape = new Location(); groupShape.Shape = deliveryPointGroup.GroupBoundary.Shape; groupShape.ID = deliveryPointGroup.GroupBoundary.ID; groupShape.RowCreateDateTime = DateTime.UtcNow; DataContext.Locations.Add(groupShape); Location groupCentroidLocation = new Location(); groupCentroidLocation.Shape = groupShape.Shape.Centroid; groupCentroidLocation.ID = deliveryPointGroup.DeliveryGroup.ID; groupCentroidLocation.RowCreateDateTime = DateTime.UtcNow; DataContext.Locations.Add(groupCentroidLocation); NetworkNode groupCentroidNetworkNode = new NetworkNode(); groupCentroidNetworkNode.ID = deliveryPointGroup.DeliveryGroup.ID; groupCentroidNetworkNode.RowCreateDateTime = DateTime.UtcNow; groupCentroidNetworkNode.NetworkNodeType_GUID = deliveryPointGroup.NetworkNodeType; DataContext.NetworkNodes.Add(groupCentroidNetworkNode); DeliveryPoint groupCentroidDeliveryPoint = new DeliveryPoint(); groupCentroidDeliveryPoint.DeliveryPointUseIndicatorGUID = deliveryPointGroup.DeliveryPointUseIndicatorGUID; groupCentroidDeliveryPoint.ID = deliveryPointGroup.DeliveryGroup.ID; groupCentroidDeliveryPoint.RowCreateDateTime = DateTime.UtcNow; DataContext.DeliveryPoints.Add(groupCentroidDeliveryPoint); DeliveryPointStatus groupCentroidDeliveryPointStatus = new DeliveryPointStatus(); groupCentroidDeliveryPointStatus.ID = Guid.NewGuid(); groupCentroidDeliveryPointStatus.LocationID = deliveryPointGroup.DeliveryGroup.ID; groupCentroidDeliveryPointStatus.DeliveryPointStatusGUID = deliveryPointGroup.DeliveryGroupStatusGUID; groupCentroidDeliveryPointStatus.StartDateTime = DateTime.UtcNow; groupCentroidDeliveryPointStatus.RowCreateDateTime = DateTime.UtcNow; DataContext.DeliveryPoints.Add(groupCentroidDeliveryPoint); LocationRelationship groupShapeToCentroidRelationship = new LocationRelationship(); groupShapeToCentroidRelationship.ID = Guid.NewGuid(); groupShapeToCentroidRelationship.LocationID = deliveryPointGroup.DeliveryGroup.ID; groupShapeToCentroidRelationship.RelatedLocationID = deliveryPointGroup.GroupBoundary.ID; groupShapeToCentroidRelationship.RelationshipTypeGUID = deliveryPointGroup.RelationshipTypeForCentroidToBoundaryGUID; groupShapeToCentroidRelationship.RowCreateDateTime = DateTime.UtcNow; DataContext.LocationRelationships.Add(groupShapeToCentroidRelationship); foreach (var deliveryPoint in deliveryPointGroup.AddedDeliveryPoints) { LocationRelationship deliveryPointToCentroidRelation = new LocationRelationship(); deliveryPointToCentroidRelation.ID = Guid.NewGuid(); deliveryPointToCentroidRelation.LocationID = deliveryPoint.ID; deliveryPointToCentroidRelation.RelatedLocationID = deliveryPointGroup.DeliveryGroup.ID; deliveryPointToCentroidRelation.RelationshipTypeGUID = deliveryPointGroup.RelationshipTypeForCentroidToDeliveryPointGUID; deliveryPointToCentroidRelation.RowCreateDateTime = DateTime.UtcNow; DataContext.LocationRelationships.Add(deliveryPointToCentroidRelation); } SupportingDeliveryPoint groupDetails = new SupportingDeliveryPoint(); groupDetails.ID = deliveryPointGroup.DeliveryGroup.ID; groupDetails.GroupName = deliveryPointGroup.DeliveryGroup.GroupName; groupDetails.DeliverToReception = deliveryPointGroup.DeliveryGroup.DeliverToReception; groupDetails.GroupTypeGUID = deliveryPointGroup.DeliveryGroup.GroupTypeGUID; groupDetails.NumberOfFloors = deliveryPointGroup.DeliveryGroup.NumberOfFloors; groupDetails.InternalDistanceMeters = deliveryPointGroup.DeliveryGroup.InternalDistanceMeters; groupDetails.DeliverToReception = deliveryPointGroup.DeliveryGroup.DeliverToReception; groupDetails.WorkloadTimeOverrideMinutes = deliveryPointGroup.DeliveryGroup.WorkloadTimeOverrideMinutes; groupDetails.TimeOverrideApproved = deliveryPointGroup.DeliveryGroup.TimeOverrideApproved; groupDetails.TimeOverrideReason = deliveryPointGroup.DeliveryGroup.TimeOverrideReason; groupDetails.RowCreateDateTime = DateTime.UtcNow; DataContext.SupportingDeliveryPoint.Add(groupDetails); DataContext.SaveChanges(); isDeliveryPointGroupCreationSuccess = true; } loggingHelper.LogMethodExit(methodName, priority, exitEventId); return(isDeliveryPointGroupCreationSuccess); } }