예제 #1
0
        /// <summary>
        /// <para> CommodityGroup to be removed/deleted.</para>
        /// </summary>
        /// <param name="commodityGroupId">
        /// <para>Identifier of the CommodityGroup to be removed/deleted.</para>
        /// </param>
        /// <returns>
        /// <para> - All data of the CommodityGroup removed/deleted </para>
        /// <para>   in a ready for insert-state (keys=-1)</para>
        /// <para>   to facilitate undo by re-insert...</para>
        /// </returns>
        public async Task <CommodityGroup> DeleteCommodityGroup(int commodityGroupId)
        {
            var commodityGroupDeleted = await mc_KomodoDbContext.CommodityGroups
                                        .Include(CmdGrp => CmdGrp.Commodities)
                                        .FirstOrDefaultAsync(CmdGrp => CmdGrp.CommodityGroupId == commodityGroupId);

            CommodityGroup commodityGroupUndo = null;

            // - If the executed is dead do not kill him again...
            if (commodityGroupDeleted != null)
            {
                // - Build a new unrelated object that can be used for undo purposes
                commodityGroupUndo = new CommodityGroup();
                commodityGroupUndo.CommodityGroupCode        = commodityGroupDeleted.CommodityGroupCode;
                commodityGroupUndo.CommodityGroupDescription = commodityGroupDeleted.CommodityGroupDescription;

                foreach (var commodityDeleted in commodityGroupDeleted.Commodities)
                {
                    var commodityUndo = new DbContext.Commodity()
                    {
                        CommodityCode        = commodityDeleted.CommodityCode,
                        CommodityDescription = commodityDeleted.CommodityDescription
                    };

                    commodityGroupUndo.Commodities.Add(commodityUndo);
                }

                // - WHO? Gets the Chop?
                mc_KomodoDbContext.CommodityGroups.Remove(commodityGroupDeleted);
                await mc_KomodoDbContext.SaveChangesAsync();
            }

            return(commodityGroupUndo);
        }
예제 #2
0
        /// <summary>
        /// <para> - Add/Create the CommodityGroup</para>
        /// </summary>
        /// <param name="commodityGroup">
        /// <para> - CommodityGroup to Create. Object Fully Loaded.</para>
        /// </param>
        /// <returns>
        /// <para> - CommodityGroup Created with its assigned primary key.</para>
        /// <para> - Objects in its saved state.</para>
        /// </returns>
        public async Task <CommodityGroup> CreateCommodityGroup(CommodityGroup commodityGroup)
        {
            // - Shield creation from subscriber entirely
            var commodityGroupCreated = new CommodityGroup()
            {
                CommodityGroupCode        = commodityGroup.CommodityGroupCode,
                CommodityGroupDescription = commodityGroup.CommodityGroupDescription
            };

            foreach (var commodity in commodityGroup.Commodities)
            {
                var commodityCreated = new DbContext.Commodity()
                {
                    CommodityCode        = commodity.CommodityCode,
                    CommodityDescription = commodity.CommodityDescription
                };

                commodityGroupCreated.Commodities.Add(commodityCreated);
            }

            // - To the database
            mc_KomodoDbContext.CommodityGroups.Add(commodityGroupCreated);
            await mc_KomodoDbContext.SaveChangesAsync();

            // - BACK to the future!!!
            return(commodityGroupCreated);
        }
예제 #3
0
        /// <summary>
        /// <para> - Add/Create the Commodity</para>
        /// </summary>
        /// <param name="commodity">
        /// <para> - Commodity to Create. Object Fully Loaded.</para>
        /// </param>
        /// <returns>
        /// <para> - Commodity Created with its assigned primary key.</para>
        /// <para> - Objects in its saved state.</para>
        /// </returns>
        public async Task <DbContext.Commodity> CreateCommodity(DbContext.Commodity commodity)
        {
            var commodityCreated = new DbContext.Commodity()
            {
                CommodityCode        = commodity.CommodityCode,
                CommodityDescription = commodity.CommodityDescription,
                CommodityGroupId     = commodity.CommodityGroupId // - Validation required: Must have value. Parent Must exist!
            };

            mc_KomodoDbContext.Commodities.Add(commodityCreated);
            await mc_KomodoDbContext.SaveChangesAsync();

            return(commodityCreated);
        }
예제 #4
0
        /// <summary>
        /// <para> - Update/Edit the Commodity</para>
        /// </summary>
        /// <param name="commodity">
        /// <para> - Commodity to be updated...</para>
        /// <para> - Object fully loaded.</para>
        /// </param>
        /// <returns>
        /// <para> - Commodity updated.</para>
        /// <para> - Object in its saved state.</para>
        /// </returns>
        public async Task <DbContext.Commodity> UpdateCommodity(DbContext.Commodity commodity)
        {
            var commodityExtant = await mc_KomodoDbContext.Commodities.FirstOrDefaultAsync(Cmd => Cmd.CommodityId == commodity.CommodityId);

            if (commodityExtant != null)
            {
                commodityExtant.CommodityCode        = commodity.CommodityCode;
                commodityExtant.CommodityDescription = commodity.CommodityDescription;
                commodityExtant.CommodityGroupId     = commodity.CommodityGroupId; // - Validation required: GroupId must be specified and exist

                await mc_KomodoDbContext.SaveChangesAsync();
            }

            return(commodityExtant);
        }
예제 #5
0
        /// <summary>
        /// <para> Commodity to be removed/deleted.</para>
        /// </summary>
        /// <param name="commodityId">
        /// <para>Identifier of the Commodity to be removed/deleted.</para>
        /// </param>
        /// <returns>
        /// <para> - All data of the Commodity removed/deleted </para>
        /// <para>   in a ready for insert-state (keys=-1)</para>
        /// <para>   to facilitate undo by re-insert...</para>
        /// </returns>
        public async Task <DbContext.Commodity> DeleteCommodity(int commodityId)
        {
            var commodityDeleted = await mc_KomodoDbContext.Commodities.FirstOrDefaultAsync(Cmd => Cmd.CommodityId == commodityId);

            DbContext.Commodity commodityUndo = null;

            if (commodityDeleted != null)
            {
                commodityUndo = new DbContext.Commodity();
                commodityUndo.CommodityCode        = commodityDeleted.CommodityCode;
                commodityUndo.CommodityDescription = commodityDeleted.CommodityDescription;
                commodityUndo.CommodityGroupId     = commodityDeleted.CommodityGroupId;

                // - To the database
                mc_KomodoDbContext.Commodities.Remove(commodityDeleted);
                await mc_KomodoDbContext.SaveChangesAsync();
            }

            // - Throw it back.
            return(commodityUndo);
        }
예제 #6
0
        /// <summary>
        /// <para> - Update/Edit the CommodityGroup</para>
        /// </summary>
        /// <param name="commodityGroup">
        /// <para> - CommodityGroup to be updated...</para>
        /// <para> - Object fully loaded.</para>
        /// </param>
        /// <returns>
        /// <para> - CommodityGroup updated.</para>
        /// <para> - Object in its saved state.</para>
        /// </returns>
        public async Task <CommodityGroup> UpdateCommodityGroup(CommodityGroup commodityGroup)
        {
            var commodityGroupExtant = await mc_KomodoDbContext.CommodityGroups
                                       .Include(CmdGrp => CmdGrp.Commodities)
                                       .FirstOrDefaultAsync(CmdGrp => CmdGrp.CommodityGroupId == commodityGroup.CommodityGroupId);

            if (commodityGroupExtant == null)
            {
                return(commodityGroup);
            }

            commodityGroupExtant.CommodityGroupCode        = commodityGroup.CommodityGroupCode;
            commodityGroupExtant.CommodityGroupDescription = commodityGroup.CommodityGroupDescription;

            foreach (var commodity in commodityGroup.Commodities)
            {
                var commodityExtant = await mc_KomodoDbContext.Commodities.FirstOrDefaultAsync(Cmd => Cmd.CommodityId == commodity.CommodityId);

                if (commodityExtant == null)
                {
                    commodityExtant = new DbContext.Commodity()
                    {
                        CommodityCode        = commodity.CommodityCode,
                        CommodityDescription = commodity.CommodityDescription
                    };

                    commodityGroupExtant.Commodities.Add(commodityExtant);
                }
                else
                {
                    commodityExtant.CommodityCode        = commodity.CommodityCode;
                    commodityExtant.CommodityDescription = commodity.CommodityDescription;
                }
            }

            await mc_KomodoDbContext.SaveChangesAsync();

            return(commodityGroupExtant);
        }