瀏覽代碼

reorganize controllers

Florian Morel 3 年之前
父節點
當前提交
6185f88b21

+ 0 - 22
Dotnet/Warhammer/Controllers/HomeController.cs

@@ -19,28 +19,6 @@ namespace Warhammer.Controllers
             _playerService = playerService;
         }
 
-        public async Task<IActionResult> PlayersAsync()
-        {
-            //new List<Player>
-            //{
-            //    new Player
-            //    {
-            //        Experience = 17400,
-            //        CC = 52,
-            //        CT = 40,
-            //        F = 46,
-            //        E = 45,
-            //        AG = 50,
-            //        INT = 34,
-            //        PER = 43,
-            //        FM = 43,
-            //        SOC = 40
-            //    }
-            //};
-            var players = await _playerService.GetAll();
-            return View("PlayerListView", players);
-        }
-
         public IActionResult Index()
         {
             return View();

+ 0 - 40
Dotnet/Warhammer/Controllers/PlayerController.cs

@@ -1,40 +0,0 @@
-using System.Threading.Tasks;
-using Microsoft.AspNetCore.Mvc;
-using Warhammer.Models;
-using Warhammer.Service.Interfaces;
-
-
-namespace Warhammer.Controllers
-{
-    [Controller]
-    public class PlayerController : Controller
-    {
-        private Player CurrentPlayer { get; set; }
-        private readonly IPlayerService _playerService;
-
-        public PlayerController(Player currentPlayer, IPlayerService playerService)
-        {
-            CurrentPlayer = new Player();
-            _playerService = playerService;
-        }
-
-        public async Task<IActionResult> GetById(int id)
-        {
-            var player = await _playerService.GetById(id);
-            return View("PlayerDetail", player);
-        }
-
-        [HttpGet("{id}")]
-        public async Task<IActionResult> GetPlayerById(int id)
-        {
-            var player = await _playerService.GetById(id);
-            return View("PlayerDetail", player);
-        }
-
-        public async Task<IActionResult> IndexAsync()
-        {
-            var player = await _playerService.GetById(0);
-            return View("PlayerDetail", player);
-        }
-    }
-}

+ 53 - 0
Dotnet/Warhammer/Controllers/Players/PlayerController.cs

@@ -0,0 +1,53 @@
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Mvc;
+using Warhammer.Models;
+using Warhammer.Service.Interfaces;
+
+
+namespace Warhammer.Controllers.Players
+{
+    public class PlayerController : Controller
+    {
+        private Player CurrentPlayer { get; set; }
+        private readonly IPlayerService _playerService;
+
+        public PlayerController(IPlayerService playerService)
+        {
+            CurrentPlayer = new Player();
+            _playerService = playerService;
+        }
+
+        public async Task<IActionResult> PlayersAsync()
+        {
+            var players = await _playerService.GetAll();
+            return View("Players/PlayerListView", players);
+        }
+
+        public async Task<IActionResult> PlayerDetailsAsync(int id)
+        {
+            try
+            {
+                var player = await _playerService.GetById(id);
+                return View("Players/PlayerDetail", player);
+            }
+            catch (System.Exception e)
+            {
+                throw e;
+            }
+        }
+
+        [HttpPost]
+        public async Task<IActionResult> IndexAsync()
+        {
+            try
+            {
+                var player = await _playerService.GetById(0);
+                return View("Players/PlayerDetail", player);
+            }
+            catch (System.Exception e)
+            {
+                throw e;
+            }
+        }
+    }
+}

+ 14 - 3
Dotnet/Warhammer/DataLayer/DbContextInitializer.cs

@@ -1,5 +1,7 @@
-using System.Linq;
+using System.Collections.Generic;
+using System.Linq;
 using Warhammer.Models;
+using Warhammer.Models.Weapons;
 
 namespace Warhammer.DataLayer
 {
@@ -12,6 +14,14 @@ namespace Warhammer.DataLayer
             // Look for any students.
             if (context.Players.Any()) return; // DB has been seeded
 
+            var weapon = new Weapon
+            {
+                At = "test",
+                Range = 30,
+                Attribute = "CT",
+                Type = "RANGE",
+            };
+
             var players = new[]
             {
                 new Player
@@ -25,8 +35,9 @@ namespace Warhammer.DataLayer
                     INT = 34,
                     PER = 43,
                     FM = 43,
-                    SOC = 40
-                }
+                    SOC = 40,
+                    Weapons = new List<Weapon>{ weapon }
+                },
             };
             foreach (var player in players) context.Players.Add(player);
             context.SaveChanges();

+ 17 - 18
Dotnet/Warhammer/Startup.cs

@@ -23,40 +23,39 @@ namespace Warhammer
         // This method gets called by the runtime. Use this method to add services to the container.
         public void ConfigureServices(IServiceCollection services)
         {
-            services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
-            {
-                builder.AllowAnyOrigin()
-                    .AllowAnyMethod()
-                    .AllowAnyHeader();
-            }));
+            //services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
+            //{
+            //    builder.AllowAnyOrigin()
+            //        .AllowAnyMethod()
+            //        .AllowAnyHeader();
+            //}));
 
-            services.AddControllersWithViews();
             services.AddMvc();
             services.AddHttpClient();
+            services.AddControllersWithViews();
             services.AddRazorPages();
 
             services.AddDbContext<DeathwatchDbContext>(options =>
                 options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
 
             services.AddTransient(typeof(IAbstractRepository<>), typeof(AbstractRepository<>));
+            services.AddTransient<IPlayerService, PlayerService>();
             services.AddTransient<IPlayerRepository, PlayerRepository>();
 
-            services.AddTransient<IPlayerService, PlayerService>();
 
         }
 
-        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
         public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
         {
-            //if (env.IsDevelopment())
-            //{
-            //    app.UseDeveloperExceptionPage();
-            //}
-            //else
-            //{
-            //app.UseExceptionHandler("/Home/Error");
-            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
-            //}
+            if (env.IsDevelopment())
+            {
+                app.UseDeveloperExceptionPage();
+            }
+            else
+            {
+                app.UseExceptionHandler("/Home/Error");
+                //The default HSTS value is 30 days.You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
+            }
 
             app.UseHttpsRedirection();
             app.UseStaticFiles();

+ 2 - 2
Dotnet/Warhammer/Views/Shared/PlayerDetail.cshtml

@@ -1,6 +1,6 @@
 @model Warhammer.Models.Player
 @{
-    ViewData["Title"] = "View";
+    ViewData["Title"] = "Detail";
 }
 <div>
     <h4>Player</h4>
@@ -106,5 +106,5 @@
 </div>
 <div>
     @*<a asp-action="Edit" asp-route-id="@Model.Id">Edit</a> |*@
-    <a asp-action="Index">Back to List</a>
+    <a asp-controller="Player" asp-action="Index">Back to List</a>
 </div>

+ 3 - 4
Dotnet/Warhammer/Views/Shared/PlayerListView.cshtml

@@ -9,6 +9,7 @@
 @*<p>
     <a asp-action="Create">Create New</a>
     </p>*@
+
 <table class="table">
     <thead>
         <tr>
@@ -57,9 +58,7 @@
             <tr>
 
                 <td>
-                    <a asp-action="GetPlayerById" asp-controller="Player" asp-route-id="Players/@item.Id">
-                        @Html.DisplayFor(modelItem => item.Id)
-                    </a>
+                    <a type="submit" asp-action="PlayerDetails" asp-controller="Player" class="btn-info" asp-route-id="@item.Id">@item.Id</a>
                 </td>
                 <td>
                     @Html.DisplayFor(modelItem => item.Experience)
@@ -102,4 +101,4 @@
             </tr>
         }
     </tbody>
-</table>
+</table>

+ 1 - 1
Dotnet/Warhammer/Views/Shared/_Layout.cshtml

@@ -25,7 +25,7 @@
                         <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
                     </li>
                     <li class="nav-item">
-                        <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Players">Players</a>
+                        <a class="nav-link text-dark" asp-area="" asp-controller="Player" asp-action="Players">Players</a>
                     </li>
                 </ul>
             </div>