Exemplo n.º 1
0
        /// <summary>
        /// Gets a collection of all <see cref="INotificationMethod"/> assoicated with a provider
        /// </summary>
        /// <param name="providerKey">The <see cref="IGatewayProviderSettings"/> key</param>
        /// <returns>A collection of all <see cref="INotificationMethod"/> associated with a provider</returns>
        public IEnumerable <INotificationMethod> GetNotifcationMethodsByProviderKey(Guid providerKey)
        {
            using (var repository = RepositoryFactory.CreateNotificationMethodRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <INotificationMethod> .Builder.Where(x => x.ProviderKey == providerKey);

                return(repository.GetByQuery(query));
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// For testing
 /// </summary>
 /// <returns>
 /// The collection of all anonymous customers
 /// </returns>
 internal IEnumerable <IAnonymousCustomer> GetAllAnonymousCustomers()
 {
     using (var repository = RepositoryFactory.CreateAnonymousCustomerRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetAll());
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Gets a page of keys
        /// </summary>
        /// <param name="page">
        /// The page.
        /// </param>
        /// <param name="itemsPerPage">
        /// The items per page.
        /// </param>
        /// <param name="sortBy">
        /// The sort by.
        /// </param>
        /// <param name="sortDirection">
        /// The sort direction.
        /// </param>
        /// <returns>
        /// The <see cref="Page{Guid}"/>.
        /// </returns>
        internal override Page <Guid> GetPagedKeys(long page, long itemsPerPage, string sortBy = "", SortDirection sortDirection = SortDirection.Descending)
        {
            using (var repository = (OrderRepository)RepositoryFactory.CreateOrderRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Persistence.Querying.Query <IOrder> .Builder.Where(x => x.Key != Guid.Empty);

                return(repository.GetPagedKeys(page, itemsPerPage, query, sortBy, sortDirection));
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Gets a <see cref="IDataTypeDefinition"/> by its Name
 /// </summary>
 /// <param name="name">Name of the <see cref="IDataTypeDefinition"/></param>
 /// <returns><see cref="IDataTypeDefinition"/></returns>
 public IDataTypeDefinition GetDataTypeDefinitionByName(string name)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetByQuery(new Query <IDataTypeDefinition>().Where(x => x.Name == name)).FirstOrDefault());
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Gets a <see cref="IDataTypeDefinition"/> by its unique guid Id
        /// </summary>
        /// <param name="id">Unique guid Id of the DataType</param>
        /// <returns><see cref="IDataTypeDefinition"/></returns>
        public IDataTypeDefinition GetDataTypeDefinitionById(Guid id)
        {
            using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IDataTypeDefinition> .Builder.Where(x => x.Key == id);

                var definitions = repository.GetByQuery(query);

                return(definitions.FirstOrDefault());
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// Gets all <see cref="IDataTypeDefinition"/> objects or those with the ids passed in
 /// </summary>
 /// <param name="ids">Optional array of Ids</param>
 /// <returns>An enumerable list of <see cref="IDataTypeDefinition"/> objects</returns>
 public IEnumerable <IDataTypeDefinition> GetAllDataTypeDefinitions(params int[] ids)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetAll(ids));
     }
 }
Exemplo n.º 7
0
 /// <summary>
 /// Returns the PreValueCollection for the specified data type
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public PreValueCollection GetPreValuesCollectionByDataTypeId(int id)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetPreValuesCollectionByDataTypeId(id));
     }
 }
Exemplo n.º 8
0
        public async System.Threading.Tasks.Task RequestTestAsync()
        {
            EBGetOrderListReqModel reqModel = new EBGetOrderListReqModel();

            reqModel.GetDetail = IsOrNotEnum.Yes;
            reqModel.Page      = 1;
            reqModel.PageSize  = 100;
            Conditions    c    = new Conditions();
            List <string> list = new List <string>();

            list.Add("600153656");
            c.RefNos           = list;
            reqModel.Condition = c;
            EBGetOrderListRequest req = new EBGetOrderListRequest("admin", "longqi123456", reqModel);
            var rr = await req.Request();

            var repository = LogManager.CreateRepository(Common.LogFactory.repositoryName);

            // 指定配置文件
            XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
            var logger    = new Moq.Mock <ILogger <DataAccess> >();
            var sp        = new Moq.Mock <IServiceProvider>();
            var myContext = new Service.Context.XinDBContext(new Microsoft.EntityFrameworkCore.DbContextOptions <Service.Context.XinDBContext>());

            sp.Setup((o) => o.GetService(typeof(IEntityContext))).Returns(myContext);

            sp.Setup((o) => o.GetService(typeof(IRepository <ECSalesOrder>)))
            .Returns(new GenericEntityRepository <ECSalesOrder>(logger.Object));
            var provider = new UowProvider(logger.Object, sp.Object);

            using (var uow = provider.CreateUnitOfWork())
            {
                var repos = uow.GetRepository <ECSalesOrder>();
                List <ECSalesOrder> insertList = new List <ECSalesOrder>();
                List <ECSalesOrder> updateList = new List <ECSalesOrder>();
                foreach (var item in rr.Body)
                {
                    var m = Mapper <EC_SalesOrder, ECSalesOrder> .Map(item);

                    var had = repos.Get(m.OrderId, x => x.Include(a => a.BnsSendDeliverdToEcs));
                    if (had != null)
                    {
                        updateList.Add(m);
                    }
                    else
                    {
                        insertList.Add(m);
                    }
                }
                try
                {
                    insertList = insertList.GroupBy(item => item.OrderId).Select(item => item.First()).ToList();
                    updateList = updateList.GroupBy(item => item.OrderId).Select(item => item.First()).ToList();
                    await repos.BulkInsertAsync(insertList, x => x.IncludeGraph = true);

                    await repos.BulkUpdateAsync(updateList, x => x.IncludeGraph = true);

                    uow.BulkSaveChanges();
                    insertList.Clear();
                    updateList.Clear();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            Assert.Fail();
        }
Exemplo n.º 9
0
        /// <inheritdoc />
        public IAuditEntry Write(int performingUserId, string perfomingDetails, string performingIp, DateTime eventDateUtc, int affectedUserId, string affectedDetails, string eventType, string eventDetails)
        {
            if (performingUserId < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(performingUserId));
            }
            if (string.IsNullOrWhiteSpace(perfomingDetails))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(perfomingDetails));
            }
            if (string.IsNullOrWhiteSpace(eventType))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(eventType));
            }
            if (string.IsNullOrWhiteSpace(eventDetails))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(eventDetails));
            }

            //we need to truncate the data else we'll get SQL errors
            affectedDetails = affectedDetails?.Substring(0, Math.Min(affectedDetails.Length, AuditEntryDto.DetailsLength));
            eventDetails    = eventDetails.Substring(0, Math.Min(eventDetails.Length, AuditEntryDto.DetailsLength));

            //validate the eventType - must contain a forward slash, no spaces, no special chars
            var eventTypeParts = eventType.ToCharArray();

            if (eventTypeParts.Contains('/') == false || eventTypeParts.All(c => char.IsLetterOrDigit(c) || c == '/' || c == '-') == false)
            {
                throw new ArgumentException(nameof(eventType) + " must contain only alphanumeric characters, hyphens and at least one '/' defining a category");
            }
            if (eventType.Length > AuditEntryDto.EventTypeLength)
            {
                throw new ArgumentException($"Must be max {AuditEntryDto.EventTypeLength} chars.", nameof(eventType));
            }
            if (performingIp != null && performingIp.Length > AuditEntryDto.IpLength)
            {
                throw new ArgumentException($"Must be max {AuditEntryDto.EventTypeLength} chars.", nameof(performingIp));
            }

            var entry = new AuditEntry
            {
                PerformingUserId  = performingUserId,
                PerformingDetails = perfomingDetails,
                PerformingIp      = performingIp,
                EventDateUtc      = eventDateUtc,
                AffectedUserId    = affectedUserId,
                AffectedDetails   = affectedDetails,
                EventType         = eventType,
                EventDetails      = eventDetails
            };

            if (_isAvailable.Value == false)
            {
                return(entry);
            }

            using (var uow = UowProvider.GetUnitOfWork())
            {
                var repository = RepositoryFactory.CreateAuditEntryRepository(uow);
                repository.AddOrUpdate(entry);
                uow.Commit();
            }

            return(entry);
        }
Exemplo n.º 10
0
 /// <summary>
 /// Gets a collection of <see cref="IEntityFilterGroup"/> by a collection of keys.
 /// </summary>
 /// <param name="keys">
 /// The keys.
 /// </param>
 /// <returns>
 /// The <see cref="IEnumerable{IEntityFilterGroup}"/>.
 /// </returns>
 internal IEnumerable <IEntityFilterGroup> GetEntityFilterGroupsByProviderKeys(IEnumerable <Guid> keys)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetEntityFilterGroupsByProviderKeys(keys.ToArray()));
     }
 }
Exemplo n.º 11
0
 /// <summary>
 /// Gets a collection of <see cref="IEntityFilterGroup"/> by a collection of keys that are not associated
 /// with a product
 /// </summary>
 /// <param name="keys">
 /// The keys.
 /// </param>
 /// <param name="productKey">
 /// The product key.
 /// </param>
 /// <returns>
 /// The <see cref="IEnumerable{IEntityFilterGroup}"/>.
 /// </returns>
 internal IEnumerable <IEntityFilterGroup> GetEntityFilterGroupsNotContainingProduct(IEnumerable <Guid> keys, Guid productKey)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetEntityFilterGroupsNotContainingProduct(keys.ToArray(), productKey));
     }
 }
Exemplo n.º 12
0
 /// <summary>
 /// The get entity collections by product key.
 /// </summary>
 /// <param name="productKey">
 /// The product key.
 /// </param>
 /// <param name="isFilter">
 /// A value indicating whether the query should be for filter collections or standard "static" collections
 /// </param>
 /// <returns>
 /// The <see cref="IEnumerable{IEntityCollection}"/>.
 /// </returns>
 internal IEnumerable <IEntityCollection> GetEntityCollectionsByProductKey(Guid productKey, bool isFilter = false)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetEntityCollectionsByProductKey(productKey, isFilter));
     }
 }
Exemplo n.º 13
0
        /// <summary>
        /// Gets the count of collections managed by a provider
        /// </summary>
        /// <param name="providerKey">The provider key</param>
        /// <returns>
        /// The count of collections managed by a provider
        /// </returns>
        public int CollectionCountManagedByProvider(Guid providerKey)
        {
            using (var repostitory = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ProviderKey == providerKey);

                return(repostitory.Count(query));
            }
        }
Exemplo n.º 14
0
 /// <summary>
 /// Gets a collection of all notification methods.
 /// </summary>
 /// <remarks>Primarily used for testing</remarks>
 internal IEnumerable <INotificationMethod> GetAll()
 {
     using (var repository = RepositoryFactory.CreateNotificationMethodRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetAll());
     }
 }
Exemplo n.º 15
0
 /// <summary>
 /// Determines if a collection exists.
 /// </summary>
 /// <param name="key">
 /// The key.
 /// </param>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public bool Exists(Guid key)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Exists(key));
     }
 }
Exemplo n.º 16
0
 /// <summary>
 /// The get by key.
 /// </summary>
 /// <param name="key">
 /// The key.
 /// </param>
 /// <returns>
 /// The <see cref="IEntityCollection"/>.
 /// </returns>
 public IEntityCollection GetByKey(Guid key)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Get(key));
     }
 }
Exemplo n.º 17
0
 /// <summary>
 /// The get entity collections by customer key.
 /// </summary>
 /// <param name="customerKey">
 /// The customer key.
 /// </param>
 /// <returns>
 /// The <see cref="IEnumerable{IEntityCollection}"/>.
 /// </returns>
 internal IEnumerable <IEntityCollection> GetEntityCollectionsByCustomerKey(Guid customerKey)
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetEntityCollectionsByCustomerKey(customerKey));
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// The get by provider key.
        /// </summary>
        /// <param name="providerKey">
        /// The provider key.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{IEntityCollection}"/>.
        /// </returns>
        public IEnumerable <IEntityCollection> GetByProviderKey(Guid providerKey)
        {
            using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ProviderKey == providerKey);

                return(repository.GetByQuery(query));
            }
        }
Exemplo n.º 19
0
 /// <summary>
 /// Gets all prevalues for an <see cref="IDataTypeDefinition"/>
 /// </summary>
 /// <param name="id">Id of the <see cref="IDataTypeDefinition"/> to retrieve prevalues from</param>
 /// <returns>An enumerable list of string values</returns>
 public IEnumerable <string> GetPreValuesByDataTypeId(int id)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         var collection = repository.GetPreValuesCollectionByDataTypeId(id);
         //now convert the collection to a string list
         var list = collection.FormatAsDictionary()
                    .Select(x => x.Value.Value)
                    .ToList();
         return(list);
     }
 }
Exemplo n.º 20
0
 /// <summary>
 /// The get all.
 /// </summary>
 /// <returns>
 /// The <see cref="IEnumerable{IEntityCollection}"/>.
 /// </returns>
 public IEnumerable <IEntityCollection> GetAll()
 {
     using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetAll());
     }
 }
Exemplo n.º 21
0
 /// <summary>
 /// Gets a specific PreValue by its Id
 /// </summary>
 /// <param name="id">Id of the PreValue to retrieve the value from</param>
 /// <returns>PreValue as a string</returns>
 public string GetPreValueAsString(int id)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.GetPreValueAsString(id));
     }
 }
Exemplo n.º 22
0
        /// <summary>
        /// The exists in collection.
        /// </summary>
        /// <param name="parentKey">
        /// The parent key.
        /// </param>
        /// <param name="collectionKey">
        /// The collection key.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool ExistsInCollection(Guid?parentKey, Guid collectionKey)
        {
            using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ParentKey == parentKey && x.Key == collectionKey);

                return(repository.Count(query) > 0);
            }
        }
Exemplo n.º 23
0
 /// <summary>
 /// Gets a <see cref="IDataTypeDefinition"/> by its Id
 /// </summary>
 /// <param name="id">Id of the <see cref="IDataTypeDefinition"/></param>
 /// <returns><see cref="IDataTypeDefinition"/></returns>
 public IDataTypeDefinition GetDataTypeDefinitionById(int id)
 {
     using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Get(id));
     }
 }
Exemplo n.º 24
0
        /// <summary>
        /// The get root level entity collections.
        /// </summary>
        /// <param name="entityTfKey">
        /// The entity type field key.
        /// </param>
        /// <returns>
        /// The <see cref="IEnumerable{IEntityCollection}"/>.
        /// </returns>
        public IEnumerable <IEntityCollection> GetRootLevelEntityCollections(Guid entityTfKey)
        {
            using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ParentKey == null && x.EntityTfKey == entityTfKey);

                return(repository.GetByQuery(query));
            }
        }
Exemplo n.º 25
0
        /// <summary>
        /// Gets a <see cref="IDataTypeDefinition"/> by its control Id
        /// </summary>
        /// <param name="propertyEditorAlias">Alias of the property editor</param>
        /// <returns>Collection of <see cref="IDataTypeDefinition"/> objects with a matching contorl id</returns>
        public IEnumerable <IDataTypeDefinition> GetDataTypeDefinitionByPropertyEditorAlias(string propertyEditorAlias)
        {
            using (var repository = RepositoryFactory.CreateDataTypeDefinitionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IDataTypeDefinition> .Builder.Where(x => x.PropertyEditorAlias == propertyEditorAlias);

                var definitions = repository.GetByQuery(query);

                return(definitions);
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// The get from collection.
        /// </summary>
        /// <param name="collectionKey">
        /// The collection key.
        /// </param>
        /// <param name="page">
        /// The page.
        /// </param>
        /// <param name="itemsPerPage">
        /// The items per page.
        /// </param>
        /// <param name="sortBy">
        /// The sort by.
        /// </param>
        /// <param name="sortDirection">
        /// The sort direction.
        /// </param>
        /// <returns>
        /// The <see cref="Page"/>.
        /// </returns>
        public Page <IEntityCollection> GetFromCollection(
            Guid collectionKey,
            long page,
            long itemsPerPage,
            string sortBy = "",
            SortDirection sortDirection = SortDirection.Descending)
        {
            using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ParentKey == collectionKey);

                return(repository.GetPage(page, itemsPerPage, query, ValidateSortByField(sortBy), sortDirection));
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// Gets an <see cref="ICustomer"/> or <see cref="IAnonymousCustomer"/> object by its 'UniqueId'
        /// </summary>
        /// <param name="entityKey">GUID key of either object to retrieve</param>
        /// <returns><see cref="ICustomerBase"/></returns>
        public ICustomerBase GetAnyByKey(Guid entityKey)
        {
            ICustomerBase customer;

            // try retrieving an anonymous customer first as in most situations this will be what is being queried
            using (var repository = RepositoryFactory.CreateAnonymousCustomerRepository(UowProvider.GetUnitOfWork()))
            {
                customer = repository.Get(entityKey);
            }

            if (customer != null)
            {
                return(customer);
            }

            // try retrieving an existing customer
            using (var repository = RepositoryFactory.CreateCustomerRepository(UowProvider.GetUnitOfWork()))
            {
                return(repository.Get(entityKey));
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// The child entity collection count.
        /// </summary>
        /// <param name="collectionKey">
        /// The collection key.
        /// </param>
        /// <returns>
        /// The <see cref="int"/>.
        /// </returns>
        public int ChildEntityCollectionCount(Guid collectionKey)
        {
            using (var repository = RepositoryFactory.CreateEntityCollectionRepository(UowProvider.GetUnitOfWork()))
            {
                var query = Query <IEntityCollection> .Builder.Where(x => x.ParentKey == collectionKey);

                return(repository.Count(query));
            }
        }
Exemplo n.º 29
0
 /// <summary>
 /// Gets a <see cref="INotificationMessage"/> by it's unique key (Guid)
 /// </summary>
 /// <param name="key">The key (Guid) for the <see cref="INotificationMessage"/> to be retrieved</param>
 public INotificationMessage GetByKey(Guid key)
 {
     using (var repository = RepositoryFactory.CreateNotificationMessageRepository(UowProvider.GetUnitOfWork()))
     {
         return(repository.Get(key));
     }
 }
Exemplo n.º 30
0
        /// <summary>
        /// Saves a collection of <see cref="IShipment"/> objects
        /// </summary>
        /// <param name="shipmentList">Collection of <see cref="IShipment"/> to save</param>
        /// <param name="raiseEvents">Optional boolean indicating whether or not to raise events</param>
        public void Save(IEnumerable <IShipment> shipmentList, bool raiseEvents = true)
        {
            var shipmentsArray = shipmentList as IShipment[] ?? shipmentList.ToArray();

            var newShipmentCount = shipmentsArray.Count(x => x.ShipmentNumber <= 0 && !((Shipment)x).HasIdentity);


            if (newShipmentCount > 0)
            {
                var lastShipmentumber =
                    _storeSettingService.GetNextShipmentNumber(newShipmentCount);
                foreach (var newShipment in shipmentsArray.Where(x => x.ShipmentNumber <= 0 && !((Shipment)x).HasIdentity))
                {
                    ((Shipment)newShipment).ShipmentNumber = lastShipmentumber;
                    lastShipmentumber = lastShipmentumber - 1;
                }
            }

            var existingShipmentsWithStatusChanges =
                shipmentsArray.Where(
                    x => ((Shipment)x).HasIdentity && ((Shipment)x).IsPropertyDirty("ShipmentStatus"))
                .ToArray();

            if (raiseEvents)
            {
                Saving.RaiseEvent(new SaveEventArgs <IShipment>(shipmentsArray), this);
                if (existingShipmentsWithStatusChanges.Any())
                {
                    StatusChanging.RaiseEvent(
                        new StatusChangeEventArgs <IShipment>(existingShipmentsWithStatusChanges),
                        this);
                }
            }

            if (raiseEvents)
            {
                Saving.RaiseEvent(new SaveEventArgs <IShipment>(shipmentsArray), this);
            }

            using (new WriteLock(Locker))
            {
                var uow = UowProvider.GetUnitOfWork();
                using (var repository = RepositoryFactory.CreateShipmentRepository(uow))
                {
                    foreach (var shipment in shipmentsArray)
                    {
                        repository.AddOrUpdate(shipment);
                    }
                    uow.Commit();
                }
            }

            if (!raiseEvents)
            {
                return;
            }
            Saved.RaiseEvent(new SaveEventArgs <IShipment>(shipmentsArray), this);
            if (existingShipmentsWithStatusChanges.Any())
            {
                StatusChanged.RaiseEvent(new StatusChangeEventArgs <IShipment>(existingShipmentsWithStatusChanges), this);
            }
        }