public override async Task <SaleInfo> GetSale(SaleGet request, ServerCallContext context) { MySqlConnection db = new AppDb().Connection; await db.OpenAsync(); var cmd = db.CreateCommand(); // Database lookup with id cmd.CommandText = "SELECT ITEM.item_id, ITEM.name, ITEM.price, ITEMDETAIL.quantity, SALE.total_billed " + "FROM ITEMDETAIL " + "JOIN ITEM ON ITEMDETAIL.item_id = ITEM.item_id " + "JOIN SALE ON sale.sale_id = ITEMDETAIL.sale_id " + $"WHERE SALE.sale_id = {request.SaleId};"; var salesinfo = await cmd.ExecuteReaderAsync(); var totalBilled = 0f; // get item infos List <ItemRequestDetails> iteminfos = new List <ItemRequestDetails>(); while (await salesinfo.ReadAsync()) { iteminfos.Add(new ItemRequestDetails { ItemId = salesinfo.GetFieldValue <uint>(0), Name = salesinfo.GetFieldValue <string>(1), Price = salesinfo.GetFieldValue <float>(2), Quantity = salesinfo.GetFieldValue <uint>(3) }); totalBilled = salesinfo.GetFieldValue <float>(4); } await salesinfo.CloseAsync(); await db.CloseAsync(); await db.DisposeAsync(); // TODO: proper return return(await Task.FromResult(new SaleInfo { ItemDetails = { iteminfos }, SaleId = request.SaleId, TotalBilled = totalBilled })); }
public override async Task <ErrorCodeReply> DeleteSale(SaleGet request, ServerCallContext context) { MySqlConnection db = new AppDb().Connection; await db.OpenAsync(); var cmd = db.CreateCommand(); cmd.CommandText = $"DELETE FROM sale WHERE sale_id = {request.SaleId}"; var reader = await cmd.ExecuteReaderAsync(); await reader.CloseAsync(); bool recordsAffected = (reader.RecordsAffected >= 1); _logger.LogInformation($"Deleted sale with id: {request.SaleId} from database"); return(new ErrorCodeReply { ErrorCode = recordsAffected }); }