コード例 #1
0
        /// <summary>
        /// Replaces a new Menu
        /// </summary>
        /// <param name="newMenu">The Menu to be inserted</param>
        /// <returns>Returns a result containing the created resource id</returns>
        public async Task <Result> ReplaceFullMenu(int venueId, UpdatedMenu newMenu)
        {
            try
            {
                using var con = new Npgsql.NpgsqlConnection(settings.Connection.DatabaseConnectionString);
                await con.ExecuteAsync(
                    @"UPDATE ""Menu""
            SET menuDescription = @MenuDescription,
            menuName = @MenuName,
            menuImage = @MenuImage
            where menuid = @MenuId and venueid = @venueid",
                    new
                {
                    newMenu.MenuDescription,
                    newMenu.MenuName,
                    newMenu.MenuImage,
                    newMenu.MenuId,
                    VenueId = venueId
                }
                    ).ConfigureAwait(false);

                await con.ExecuteAsync(@"DELETE FROM ""MenuItem"" WHERE menuId = @MenuId", new { newMenu.MenuId }).ConfigureAwait(false);

                await con.ExecuteAsync(
                    @"INSERT INTO ""MenuItem""(
              venueid, menuid, productid
            ) VALUES (
              @VenueId, @MenuId, @ProductId
            ) RETURNING menuId",
                    newMenu.Products.Select(p => new { venueId, newMenu.MenuId, ProductId = p }).ToList()
                    ).ConfigureAwait(false);

                return(Result.Ok());
            }
            catch (Exception ex)
            {
                return(Result.Fail(ex.ToString()));
            }
        }
コード例 #2
0
ファイル: MenuController.cs プロジェクト: Mesh-Tech/koasta
        public async Task <IActionResult> ReplaceMenu([FromRoute(Name = "venueId")] int venueId, [FromBody] UpdatedMenu updatedMenu)
        {
            if (updatedMenu.MenuDescription == null || updatedMenu.MenuName == null || updatedMenu.Products == null)
            {
                return(BadRequest());
            }

            return(await menus.ReplaceFullMenu(venueId, updatedMenu)
                   .OnBoth(m => m.IsFailure ? StatusCode(500) : StatusCode(200))
                   .ConfigureAwait(false));
        }