示例#1
0
        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);
        }
示例#2
0
        /// <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);
            }
        }