/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }