[Tizen] Add BuildTools 2.1.0-rc1-02804-05
[platform/upstream/coreclr.git] / Tools / dotnetcli / sdk / NuGetFallbackFolder / microsoft.visualstudio.web.codegenerators.mvc / 2.0.1 / Templates / ControllerGenerator / ApiControllerWithContext.cshtml
1 @inherits Microsoft.VisualStudio.Web.CodeGeneration.Templating.RazorTemplateBase
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Threading.Tasks;
6 using Microsoft.AspNetCore.Http;
7 using Microsoft.AspNetCore.Mvc;
8 using Microsoft.EntityFrameworkCore;
9 @{
10     foreach (var namespaceName in Model.RequiredNamespaces)
11     {
12 @:using @namespaceName;
13     }
14 }
15
16 namespace @Model.ControllerNamespace
17 {
18 @{
19     string routePrefix = "api/" + Model.ControllerRootName;
20     var entitySetName = Model.ModelMetadata.EntitySetName;
21     var primaryKeyName = Model.ModelMetadata.PrimaryKeys[0].PropertyName;
22     var primaryKeyShortTypeName = Model.ModelMetadata.PrimaryKeys[0].ShortTypeName;
23     var primaryKeyType = Model.ModelMetadata.PrimaryKeys[0].TypeName;
24     var primaryKeyIsAutoGenerated = Model.ModelMetadata.PrimaryKeys[0].IsAutoGenerated;
25 }
26     [Produces("application/json")]
27     [Route("@routePrefix")]
28     public class @Model.ControllerName : Controller
29     {
30         private readonly @Model.ContextTypeName _context;
31
32         public @(Model.ControllerName)(@Model.ContextTypeName context)
33         {
34             _context = context;
35         }
36
37         // GET: @routePrefix
38         [HttpGet]
39         public IEnumerable<@Model.ModelTypeName> Get@(entitySetName)()
40         {
41             return _context.@(entitySetName);
42         }
43
44         // GET: @routePrefix/5
45         [HttpGet("{id}")]
46         public async Task<IActionResult> Get@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id)
47         {
48             if (!ModelState.IsValid)
49             {
50                 return BadRequest(ModelState);
51             }
52
53             var @Model.ModelVariable = await _context.@(entitySetName).SingleOrDefaultAsync(m => m.@primaryKeyName == id);
54
55             if (@Model.ModelVariable == null)
56             {
57                 return NotFound();
58             }
59
60             return Ok(@Model.ModelVariable);
61         }
62
63         // PUT: @routePrefix/5
64         [HttpPut("{id}")]
65         public async Task<IActionResult> Put@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id, [FromBody] @Model.ModelTypeName @Model.ModelVariable)
66         {
67             if (!ModelState.IsValid)
68             {
69                 return BadRequest(ModelState);
70             }
71
72             if (id != @(Model.ModelVariable).@primaryKeyName)
73             {
74                 return BadRequest();
75             }
76
77             _context.Entry(@Model.ModelVariable).State = EntityState.Modified;
78
79             try
80             {
81                 await _context.SaveChangesAsync();
82             }
83             catch (DbUpdateConcurrencyException)
84             {
85                 if (!@(Model.ModelTypeName)Exists(id))
86                 {
87                     return NotFound();
88                 }
89                 else
90                 {
91                     throw;
92                 }
93             }
94
95             return NoContent();
96         }
97
98         // POST: @routePrefix
99         [HttpPost]
100         public async Task<IActionResult> Post@(Model.ModelTypeName)([FromBody] @Model.ModelTypeName @Model.ModelVariable)
101         {
102             if (!ModelState.IsValid)
103             {
104                 return BadRequest(ModelState);
105             }
106
107             _context.@(entitySetName).Add(@Model.ModelVariable);
108 @{
109     if (primaryKeyIsAutoGenerated)
110     {
111             @:await _context.SaveChangesAsync();
112     }
113     else
114     {
115             @:try
116             @:{
117                 @:await _context.SaveChangesAsync();
118             @:}
119             @:catch (DbUpdateException)
120             @:{
121                 @:if (@(Model.ModelTypeName)Exists(@(Model.ModelVariable).@primaryKeyName))
122                 @:{
123                     @:return new StatusCodeResult(StatusCodes.Status409Conflict);
124                 @:}
125                 @:else
126                 @:{
127                     @:throw;
128                 @:}
129             @:}
130     }
131 }
132
133             return CreatedAtAction("Get@(Model.ModelTypeName)", new { id = @(Model.ModelVariable).@primaryKeyName }, @Model.ModelVariable);
134         }
135
136         // DELETE: @routePrefix/5
137         [HttpDelete("{id}")]
138         public async Task<IActionResult> Delete@(Model.ModelTypeName)([FromRoute] @primaryKeyShortTypeName id)
139         {
140             if (!ModelState.IsValid)
141             {
142                 return BadRequest(ModelState);
143             }
144
145             var @Model.ModelVariable = await _context.@(entitySetName).SingleOrDefaultAsync(m => m.@primaryKeyName == id);
146             if (@Model.ModelVariable == null)
147             {
148                 return NotFound();
149             }
150
151             _context.@(entitySetName).Remove(@Model.ModelVariable);
152             await _context.SaveChangesAsync();
153
154             return Ok(@Model.ModelVariable);
155         }
156
157         private bool @(Model.ModelTypeName)Exists(@primaryKeyShortTypeName id)
158         {
159             return _context.@(entitySetName).Any(e => e.@primaryKeyName == id);
160         }
161     }
162 }