Esempio n. 1
0
        //private static readonly Lazy<ICatalogueItemQDAL> _lazyCatalogueItemQDAL = ObjectContainer.LazyResolve<ICatalogueItemQDAL>();
        //private ICatalogueItemQDAL CatalogueItemQDAL => _lazyCatalogueItemQDAL.Value;

        //private static readonly Lazy<IProductFamilyQDAL> _lazyProductFamilyQDAL = ObjectContainer.LazyResolve<IProductFamilyQDAL>();
        //private IProductFamilyQDAL ProductFamilyQDAL => _lazyProductFamilyQDAL.Value;

        #endregion
        // *******************************************************************************************************************************
        #region -  RefreshProductFamilyAsync  -

        public async Task <string> RefreshProductFamilyAsync(RefreshProductFamilyCommand cmd)
        {
            if (cmd.RefreshChangesOnly)
            {
                var changedFamilyIds = cmd.FamilyIDs
                                       .Select(async id =>
                {
                    var family = await ProductFamilyMDAL.GetFamilyWithItemsAsync(id).ConfigureAwait(false);
                    if (family.IsNotNull() && family.Items.IsPresent())
                    {
                        if (family.Flags.HasAnyFlag(ProductFlagsEnum.HasChanges))
                        {
                            return(family.ID);
                        }
                    }
                    return(null);
                })
                                       .Select(x => x.Result)
                                       .Where(x => x.IsNotNull())
                                       .ToList();

                if (!changedFamilyIds.IsPresent())
                {
                    return(MsgCodes.DATA_NOT_FOUND_QUERYDB);
                }
                // ^^^^^^^^^^

                cmd.FamilyIDs = changedFamilyIds;
            }

            // Run Transactions
            IList <string> msgCodes = new List <string>();

            foreach (var item in cmd.FamilyIDs)
            {
                var tran = new RefreshTransaction(new RefreshProductFamilyCommand {
                    FamilyID = item
                });
                await tran.RunAsync().ConfigureAwait(false);

                msgCodes.Add(tran.IsSuccess ? MsgCodes.SUCCESS : string.Join("\n", tran.ReadLogs()));
            }
            return(string.Join(",", msgCodes));
        }
Esempio n. 2
0
        // *******************************************************************************************************************************
        #region -  Constructor(s)  -

        public RefreshTransaction(RefreshProductFamilyCommand command)
            : base(command.CorrelationId)
        {
            Context.Set("FamilyID", command.FamilyID);
        }
 public async Task <string> RefreshAllAsync(RefreshProductFamilyCommand cmd)
 {
     return(await SendAsync(cmd).ConfigureAwait(false));
 }