From 6d87631373b86cb27025f7260d3d7a44274133cb Mon Sep 17 00:00:00 2001 From: Deepak Pahuja Date: Fri, 1 Feb 2019 14:55:25 +0530 Subject: [PATCH 1/3] 30 minutes task --- DeepakPahuja002/index.html | 61 ++++++++++++++++++++++++++++++++++++++ DeepakPahuja002/main.js | 0 2 files changed, 61 insertions(+) create mode 100644 DeepakPahuja002/index.html create mode 100644 DeepakPahuja002/main.js diff --git a/DeepakPahuja002/index.html b/DeepakPahuja002/index.html new file mode 100644 index 0000000..8df9fe9 --- /dev/null +++ b/DeepakPahuja002/index.html @@ -0,0 +1,61 @@ + + + + + + + Tic Tac Toe Game + + + + + + +

Tic Tac Toe

+ +
+ +
+
Restart
+ + \ No newline at end of file diff --git a/DeepakPahuja002/main.js b/DeepakPahuja002/main.js new file mode 100644 index 0000000..e69de29 From 431aa174b63e84e82bba7011757b78daf5c5af2d Mon Sep 17 00:00:00 2001 From: Deepak Pahuja Date: Thu, 7 Feb 2019 15:08:31 +0530 Subject: [PATCH 2/3] Addeed JS functionality --- DeepakPahuja002/index.html | 58 ++++++----------------- DeepakPahuja002/main.css | 52 +++++++++++++++++++++ DeepakPahuja002/main.js | 95 ++++++++++++++++++++++++++++++++++++++ DeepakPahuja002/main1.js | 64 +++++++++++++++++++++++++ 4 files changed, 225 insertions(+), 44 deletions(-) create mode 100644 DeepakPahuja002/main.css create mode 100644 DeepakPahuja002/main1.js diff --git a/DeepakPahuja002/index.html b/DeepakPahuja002/index.html index 8df9fe9..f5c3b88 100644 --- a/DeepakPahuja002/index.html +++ b/DeepakPahuja002/index.html @@ -5,57 +5,27 @@ Tic Tac Toe Game - - - - + + +

Tic Tac Toe

    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
- +
 
+ \ No newline at end of file diff --git a/DeepakPahuja002/main.css b/DeepakPahuja002/main.css new file mode 100644 index 0000000..8959a2a --- /dev/null +++ b/DeepakPahuja002/main.css @@ -0,0 +1,52 @@ +h1{ + width: 100%; + text-align: center; +} +#container{ + width: 300px; + height: 300px; + border: 1px solid black; + background-color: darkseagreen; + margin: 0 auto; +} +#game{ + position: relative; + top: -26px; + left:-10px; + width: 100%; + padding: 10px; +} +li{ + list-style-type: none; + width: 100px; + height: 100px; + float: left; + text-align: center; + font-size: 60px; + line-height: 80px; + background-color: darkgrey; + +} +button{ + height: 100%; + width: 100%; + background-color: darkgrey; +} +button:hover{ + background-color: darkgrey; + color: white; +} +.o{ + color: white !important; + text-align: center; + font-size: 60px; + line-height: 80px; + background-color:green; + } +.x{ + color: white !important; + text-align: center; + line-height: 80px; + font-size: 60px; + background-color: red; +} \ No newline at end of file diff --git a/DeepakPahuja002/main.js b/DeepakPahuja002/main.js index e69de29..3875a27 100644 --- a/DeepakPahuja002/main.js +++ b/DeepakPahuja002/main.js @@ -0,0 +1,95 @@ +$(document).ready(function() { + var x = "x" + var o = "o" + var count = 0; + var o_win = 0; + var x_win = 0; + $('#game li').click(function(){ + + if ($("#one").hasClass('o') && $("#two").hasClass('o') && $("#three").hasClass('o') + || $("#four").hasClass('o') && $("#five").hasClass('o') && $("#six").hasClass('o') + || $("#seven").hasClass('o') && $("#eight").hasClass('o') && $("#nine").hasClass('o') + || $("#one").hasClass('o') && $("#four").hasClass('o') && $("#seven").hasClass('o') + || $("#two").hasClass('o') && $("#five").hasClass('o') && $("#eight").hasClass('o') + || $("#three").hasClass('o') && $("#six").hasClass('o') && $("#nine").hasClass('o') + || $("#one").hasClass('o') && $("#five").hasClass('o') && $("#nine").hasClass('o') + || $("#three").hasClass('o') && $("#five").hasClass('o') && $("#seven").hasClass('o')) + { + alert('O has won the game. Start a new game') + $("#game li").innerHTML("+"); + $("#game li").removeClass('disable') + $("#game li").removeClass('o') + $("#game li").removeClass('x') + $("#game li").removeClass('btn-primary') + $("#game li").removeClass('btn-info') + } + else if ($("#one").hasClass('x') && $("#two").hasClass('x') && $("#three").hasClass('x') + || $("#four").hasClass('x') && $("#five").hasClass('x') && $("#six").hasClass('x') + || $("#seven").hasClass('x') && $("#eight").hasClass('x') && $("#nine").hasClass('x') + || $("#one").hasClass('x') && $("#four").hasClass('x') && $("#seven").hasClass('x') + || $("#two").hasClass('x') && $("#five").hasClass('x') && $("#eight").hasClass('x') + || $("#three").hasClass('x') && $("#six").hasClass('x') && $("#nine").hasClass('x') + || $("#one").hasClass('x') && $("#five").hasClass('x') && $("#nine").hasClass('x') + || $("#three").hasClass('x') && $("#five").hasClass('x') && $("#seven").hasClass('x')) + { + alert('X wins has won the game. Start a new game') + $("#game li").text("+"); + $("#game li").removeClass('disable') + $("#game li").removeClass('o') + $("#game li").removeClass('x') + $("#game li").removeClass('btn-primary') + $("#game li").removeClass('btn-info') + } + else if (count == 9) + { + alert('Its a tie. It will restart.') + $("#game li").text("+"); + $("#game li").removeClass('disable') + $("#game li").removeClass('o') + $("#game li").removeClass('x') + count = 0 + } + else if ($(this).hasClass('disable')) + { + alert('Already selected') + } + else if (count%2 == 0) + { + count++; + $(this).text(o) + $(this).addClass('disable o') + if ($("#one").hasClass('o') && $("#two").hasClass('o') && $("#three").hasClass('o') || $("#four").hasClass('o') && $("#five").hasClass('o') && $("#six").hasClass('o') || $("#seven").hasClass('o') && $("#eight").hasClass('o') && $("#nine").hasClass('o') || $("#one").hasClass('o') && $("#four").hasClass('o') && $("#seven").hasClass('o') || $("#two").hasClass('o') && $("#five").hasClass('o') && $("#eight").hasClass('o') || $("#three").hasClass('o') && $("#six").hasClass('o') && $("#nine").hasClass('o') || $("#one").hasClass('o') && $("#five").hasClass('o') && $("#nine").hasClass('o') || $("#three").hasClass('o') && $("#five").hasClass('o') && $("#seven").hasClass('o')) + { + alert('O wins') + count = 0 + o_win++ + $('#o_win').text(o_win) + } + } + else + { + count++ + $(this).text(x) + $(this).addClass('disable x btn-info') + if ($("#one").hasClass('x') && $("#two").hasClass('x') && $("#three").hasClass('x') || $("#four").hasClass('x') && $("#five").hasClass('x') && $("#six").hasClass('x') || $("#seven").hasClass('x') && $("#eight").hasClass('x') && $("#nine").hasClass('x') || $("#one").hasClass('x') && $("#four").hasClass('x') && $("#seven").hasClass('x') || $("#two").hasClass('x') && $("#five").hasClass('x') && $("#eight").hasClass('x') || $("#three").hasClass('x') && $("#six").hasClass('x') && $("#nine").hasClass('x') || $("#one").hasClass('x') && $("#five").hasClass('x') && $("#nine").hasClass('x') || $("#three").hasClass('x') && $("#five").hasClass('x') && $("#seven").hasClass('x')) + { + alert('X wins') + count = 0 + x_win++ + $('#x_win').text(x_win) + } + } + + }); + $("#reset").click(function () { + $("#game li").text("+"); + $("#game li").removeClass('disable') + $("#game li").removeClass('o') + $("#game li").removeClass('x') + $("#game li").removeClass('btn-info') + count = 0 + + }); + }); + + \ No newline at end of file diff --git a/DeepakPahuja002/main1.js b/DeepakPahuja002/main1.js new file mode 100644 index 0000000..1256687 --- /dev/null +++ b/DeepakPahuja002/main1.js @@ -0,0 +1,64 @@ +$(document).ready(function() { + + var count = 0; + var x = "X"; + var o = "O"; + $('#game li').click(function(){ + + //////// For double click on button ////////// + if($(this).hasClass('o') || $(this).hasClass('o')){ + return; + } + + if(count == 9){ + alert("It's a TIE !!"); + } + else if(count%2==0){ + + $(this).text(o); + $(this).addClass('o'); + count++; + + } + else{ + $(this).text(x); + $(this).addClass('x'); + count++; + + } + + if ($("#one").hasClass('o') && $("#two").hasClass('o') && $("#three").hasClass('o') + || $("#four").hasClass('o') && $("#five").hasClass('o') && $("#six").hasClass('o') + || $("#seven").hasClass('o') && $("#eight").hasClass('o') && $("#nine").hasClass('o') + || $("#one").hasClass('o') && $("#four").hasClass('o') && $("#seven").hasClass('o') + || $("#two").hasClass('o') && $("#five").hasClass('o') && $("#eight").hasClass('o') + || $("#three").hasClass('o') && $("#six").hasClass('o') && $("#nine").hasClass('o') + || $("#one").hasClass('o') && $("#five").hasClass('o') && $("#nine").hasClass('o') + || $("#three").hasClass('o') && $("#five").hasClass('o') && $("#seven").hasClass('o')) + { + alert('O has won the game. Start a new game') + // $("#game li").removeClass('disable'); + $("#game li").removeClass('o'); + $("#game li").removeClass('x'); + $("#game li").text("+"); + count = 0; + } + else if ($("#one").hasClass('x') && $("#two").hasClass('x') && $("#three").hasClass('x') + || $("#four").hasClass('x') && $("#five").hasClass('x') && $("#six").hasClass('x') + || $("#seven").hasClass('x') && $("#eight").hasClass('x') && $("#nine").hasClass('x') + || $("#one").hasClass('x') && $("#four").hasClass('x') && $("#seven").hasClass('x') + || $("#two").hasClass('x') && $("#five").hasClass('x') && $("#eight").hasClass('x') + || $("#three").hasClass('x') && $("#six").hasClass('x') && $("#nine").hasClass('x') + || $("#one").hasClass('x') && $("#five").hasClass('x') && $("#nine").hasClass('x') + || $("#three").hasClass('x') && $("#five").hasClass('x') && $("#seven").hasClass('x')) + { + alert('X wins has won the game. Start a new game') + // $("#game li").removeClass('disable'); + $("#game li").removeClass('o'); + $("#game li").removeClass('x'); + $("#game li").text("+"); + count = 0; + } + + }); +}) \ No newline at end of file From 0a8683e9a265e8a2194675afc0943e45b99d5e45 Mon Sep 17 00:00:00 2001 From: Deepak Pahuja Date: Fri, 8 Feb 2019 22:35:52 +0530 Subject: [PATCH 3/3] Backend added using C# in TicTacToe --- DeepakPahuja002/.gitignore | 4 + DeepakPahuja002/TicTacToe/TicTacToe.sln | 22 + .../TicTacToe/App_Start/WebApiConfig.cs | 24 + .../TicTacToe/ApplicationInsights.config | 84 ++ .../TicTacToe/Controllers/UsersController.cs | 133 ++++ .../TicTacToe/TicTacToe/Global.asax | 1 + .../TicTacToe/TicTacToe/Global.asax.cs | 23 + .../TicTacToe/Models/Model1.Context.cs | 30 + .../TicTacToe/Models/Model1.Context.tt | 636 +++++++++++++++ .../TicTacToe/Models/Model1.Designer.cs | 10 + .../TicTacToe/TicTacToe/Models/Model1.cs | 9 + .../TicTacToe/TicTacToe/Models/Model1.edmx | 76 ++ .../TicTacToe/Models/Model1.edmx.diagram | 12 + .../TicTacToe/TicTacToe/Models/Model1.tt | 733 ++++++++++++++++++ .../TicTacToe/TicTacToe/Models/User.cs | 22 + .../TicTacToe/Properties/AssemblyInfo.cs | 35 + .../TicTacToe/TicTacToe/TicTacToe.csproj | 237 ++++++ .../TicTacToe/TicTacToe/TicTacToe.csproj.user | 38 + .../TicTacToe/TicTacToe/Web.Debug.config | 30 + .../TicTacToe/TicTacToe/Web.Release.config | 31 + .../TicTacToe/TicTacToe/Web.config | 62 ++ ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 13810 bytes .../TempPE/Models.Model1.Designer.cs.dll | Bin 0 -> 2048 bytes .../obj/Debug/TempPE/Models.Model1.cs.dll | Bin 0 -> 2048 bytes .../TempPE/Models.TicTacToe.Designer.cs.dll | Bin 0 -> 2048 bytes .../obj/Debug/TempPE/Models.TicTacToe.cs.dll | Bin 0 -> 2048 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../TicTacToe.csproj.FileListAbsolute.txt | 48 ++ ...acToe.csprojResolveAssemblyReference.cache | Bin 0 -> 106450 bytes .../TicTacToe/obj/Debug/TicTacToe.dll | Bin 0 -> 13312 bytes .../TicTacToe/obj/Debug/TicTacToe.pdb | Bin 0 -> 24064 bytes .../edmxResourcesToEmbed/Models/Model1.csdl | 15 + .../edmxResourcesToEmbed/Models/Model1.msl | 15 + .../edmxResourcesToEmbed/Models/Model1.ssdl | 15 + .../TicTacToe/TicTacToe/packages.config | 21 + DeepakPahuja002/css/game.css | 97 +++ DeepakPahuja002/css/main.css | 105 +++ DeepakPahuja002/game.html | 39 + DeepakPahuja002/index.html | 89 ++- DeepakPahuja002/js/game.js | 131 ++++ DeepakPahuja002/js/main.js | 43 + DeepakPahuja002/main.css | 52 -- DeepakPahuja002/main.js | 95 --- DeepakPahuja002/main1.js | 64 -- 46 files changed, 2851 insertions(+), 230 deletions(-) create mode 100644 DeepakPahuja002/.gitignore create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe.sln create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/App_Start/WebApiConfig.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/ApplicationInsights.config create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Controllers/UsersController.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Global.asax create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Global.asax.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.tt create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Designer.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx.diagram create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.tt create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Models/User.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Properties/AssemblyInfo.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj.user create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Web.Debug.config create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Web.Release.config create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/Web.config create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.Designer.cs.dll create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.cs.dll create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.TicTacToe.Designer.cs.dll create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.TicTacToe.cs.dll create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csproj.FileListAbsolute.txt create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csprojResolveAssemblyReference.cache create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.dll create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.pdb create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.csdl create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.msl create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.ssdl create mode 100644 DeepakPahuja002/TicTacToe/TicTacToe/packages.config create mode 100644 DeepakPahuja002/css/game.css create mode 100644 DeepakPahuja002/css/main.css create mode 100644 DeepakPahuja002/game.html create mode 100644 DeepakPahuja002/js/game.js create mode 100644 DeepakPahuja002/js/main.js delete mode 100644 DeepakPahuja002/main.css delete mode 100644 DeepakPahuja002/main.js delete mode 100644 DeepakPahuja002/main1.js diff --git a/DeepakPahuja002/.gitignore b/DeepakPahuja002/.gitignore new file mode 100644 index 0000000..4701746 --- /dev/null +++ b/DeepakPahuja002/.gitignore @@ -0,0 +1,4 @@ +TicTacToe/.vs +TicTacToe/TicTacToe/scripts +TicTacToe/TicTacToe/bin +TicTacToe/packages \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe.sln b/DeepakPahuja002/TicTacToe/TicTacToe.sln new file mode 100644 index 0000000..a97d818 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 14 for Web +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TicTacToe", "TicTacToe\TicTacToe.csproj", "{AF84E95E-2524-45BB-8692-F9E68AD9375C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AF84E95E-2524-45BB-8692-F9E68AD9375C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF84E95E-2524-45BB-8692-F9E68AD9375C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF84E95E-2524-45BB-8692-F9E68AD9375C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF84E95E-2524-45BB-8692-F9E68AD9375C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/App_Start/WebApiConfig.cs b/DeepakPahuja002/TicTacToe/TicTacToe/App_Start/WebApiConfig.cs new file mode 100644 index 0000000..b63accd --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/App_Start/WebApiConfig.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web.Http; +using System.Web.Http.Cors; + +namespace TicTacToe +{ + public static class WebApiConfig + { + public static void Register(HttpConfiguration config) + { + var cors = new EnableCorsAttribute("*", "*", "*"); + config.EnableCors(cors); + config.MapHttpAttributeRoutes(); + + config.Routes.MapHttpRoute( + name: "DefaultApi", + routeTemplate: "api/{controller}/{id}", + defaults: new { id = RouteParameter.Optional } + ); + } + } +} diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/ApplicationInsights.config b/DeepakPahuja002/TicTacToe/TicTacToe/ApplicationInsights.config new file mode 100644 index 0000000..ee9ea3c --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/ApplicationInsights.config @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + System.Web.Handlers.TransferRequestHandler + Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler + System.Web.StaticFileHandler + System.Web.Handlers.AssemblyResourceLoader + System.Web.Optimization.BundleHandler + System.Web.Script.Services.ScriptHandlerFactory + System.Web.Handlers.TraceHandler + System.Web.Services.Discovery.DiscoveryRequestHandler + System.Web.HttpDebugHandler + + + + + + + + 5 + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Controllers/UsersController.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Controllers/UsersController.cs new file mode 100644 index 0000000..9faa3c1 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Controllers/UsersController.cs @@ -0,0 +1,133 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Entity; +using System.Data.Entity.Infrastructure; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using System.Web.Http.Description; +using TicTacToe.Models; + +namespace TicTacToe.Controllers +{ + public class UsersController : ApiController + { + private TicTacToeEntities1 db = new TicTacToeEntities1(); + + // GET: api/Users + public IQueryable GetUsers() + { + return db.Users; + } + + // GET: api/Users/5 + [ResponseType(typeof(User))] + public IHttpActionResult GetUser(string id) + { + User user = db.Users.Find(id); + if (user == null) + { + return NotFound(); + } + + return Ok(user); + } + + // PUT: api/Users/5 + [ResponseType(typeof(void))] + public IHttpActionResult PutUser(string id, User user) + { + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + if (id != user.Username) + { + return BadRequest(); + } + + db.Entry(user).State = EntityState.Modified; + + try + { + db.SaveChanges(); + } + catch (DbUpdateConcurrencyException) + { + if (!UserExists(id)) + { + return NotFound(); + } + else + { + throw; + } + } + + return StatusCode(HttpStatusCode.NoContent); + } + + // POST: api/Users + [ResponseType(typeof(User))] + public IHttpActionResult PostUser(User user) + { + if (!ModelState.IsValid) + { + return BadRequest(ModelState); + } + + db.Users.Add(user); + + try + { + db.SaveChanges(); + } + catch (DbUpdateException) + { + if (UserExists(user.Username)) + { + return Conflict(); + } + else + { + throw; + } + } + + return CreatedAtRoute("DefaultApi", new { id = user.Username }, user); + } + + // DELETE: api/Users/5 + [ResponseType(typeof(User))] + public IHttpActionResult DeleteUser(string id) + { + User user = db.Users.Find(id); + if (user == null) + { + return NotFound(); + } + + db.Users.Remove(user); + db.SaveChanges(); + + return Ok(user); + } + + protected override void Dispose(bool disposing) + { + if (disposing) + { + db.Dispose(); + } + base.Dispose(disposing); + } + + private bool UserExists(string id) + { + return db.Users.Count(e => e.Username == id) > 0; + } + } +} \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax b/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax new file mode 100644 index 0000000..d39af86 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="TicTacToe.WebApiApplication" Language="C#" %> diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax.cs new file mode 100644 index 0000000..9664539 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Global.asax.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; +using System.Web.Routing; + +namespace TicTacToe +{ + public class WebApiApplication : System.Web.HttpApplication + { + protected void Application_Start() + { + GlobalConfiguration.Configure(WebApiConfig.Register); + HttpConfiguration config = GlobalConfiguration.Configuration; + + config.Formatters.JsonFormatter + .SerializerSettings + .ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; + + } + } +} \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.cs new file mode 100644 index 0000000..84f5dc4 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated from a template. +// +// Manual changes to this file may cause unexpected behavior in your application. +// Manual changes to this file will be overwritten if the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TicTacToe.Models +{ + using System; + using System.Data.Entity; + using System.Data.Entity.Infrastructure; + + public partial class TicTacToeEntities1 : DbContext + { + public TicTacToeEntities1() + : base("name=TicTacToeEntities1") + { + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + throw new UnintentionalCodeFirstException(); + } + + public virtual DbSet Users { get; set; } + } +} diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.tt b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.tt new file mode 100644 index 0000000..7b8920f --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Context.tt @@ -0,0 +1,636 @@ +<#@ template language="C#" debug="false" hostspecific="true"#> +<#@ include file="EF6.Utility.CS.ttinclude"#><#@ + output extension=".cs"#><# + +const string inputFile = @"Model1.edmx"; +var textTransform = DynamicTextTransformation.Create(this); +var code = new CodeGenerationTools(this); +var ef = new MetadataTools(this); +var typeMapper = new TypeMapper(code, ef, textTransform.Errors); +var loader = new EdmMetadataLoader(textTransform.Host, textTransform.Errors); +var itemCollection = loader.CreateEdmItemCollection(inputFile); +var modelNamespace = loader.GetModelNamespace(inputFile); +var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef); + +var container = itemCollection.OfType().FirstOrDefault(); +if (container == null) +{ + return string.Empty; +} +#> +//------------------------------------------------------------------------------ +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#> +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#> +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#> +// +//------------------------------------------------------------------------------ + +<# + +var codeNamespace = code.VsNamespaceSuggestion(); +if (!String.IsNullOrEmpty(codeNamespace)) +{ +#> +namespace <#=code.EscapeNamespace(codeNamespace)#> +{ +<# + PushIndent(" "); +} + +#> +using System; +using System.Data.Entity; +using System.Data.Entity.Infrastructure; +<# +if (container.FunctionImports.Any()) +{ +#> +using System.Data.Entity.Core.Objects; +using System.Linq; +<# +} +#> + +<#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : DbContext +{ + public <#=code.Escape(container)#>() + : base("name=<#=container.Name#>") + { +<# +if (!loader.IsLazyLoadingEnabled(container)) +{ +#> + this.Configuration.LazyLoadingEnabled = false; +<# +} + +foreach (var entitySet in container.BaseEntitySets.OfType()) +{ + // Note: the DbSet members are defined below such that the getter and + // setter always have the same accessibility as the DbSet definition + if (Accessibility.ForReadOnlyProperty(entitySet) != "public") + { +#> + <#=codeStringGenerator.DbSetInitializer(entitySet)#> +<# + } +} +#> + } + + protected override void OnModelCreating(DbModelBuilder modelBuilder) + { + throw new UnintentionalCodeFirstException(); + } + +<# + foreach (var entitySet in container.BaseEntitySets.OfType()) + { +#> + <#=codeStringGenerator.DbSet(entitySet)#> +<# + } + + foreach (var edmFunction in container.FunctionImports) + { + WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: false); + } +#> +} +<# + +if (!String.IsNullOrEmpty(codeNamespace)) +{ + PopIndent(); +#> +} +<# +} +#> +<#+ + +private void WriteFunctionImport(TypeMapper typeMapper, CodeStringGenerator codeStringGenerator, EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) +{ + if (typeMapper.IsComposable(edmFunction)) + { +#> + + [DbFunction("<#=edmFunction.NamespaceName#>", "<#=edmFunction.Name#>")] + <#=codeStringGenerator.ComposableFunctionMethod(edmFunction, modelNamespace)#> + { +<#+ + codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter); +#> + <#=codeStringGenerator.ComposableCreateQuery(edmFunction, modelNamespace)#> + } +<#+ + } + else + { +#> + + <#=codeStringGenerator.FunctionMethod(edmFunction, modelNamespace, includeMergeOption)#> + { +<#+ + codeStringGenerator.WriteFunctionParameters(edmFunction, WriteFunctionParameter); +#> + <#=codeStringGenerator.ExecuteFunction(edmFunction, modelNamespace, includeMergeOption)#> + } +<#+ + if (typeMapper.GenerateMergeOptionFunction(edmFunction, includeMergeOption)) + { + WriteFunctionImport(typeMapper, codeStringGenerator, edmFunction, modelNamespace, includeMergeOption: true); + } + } +} + +public void WriteFunctionParameter(string name, string isNotNull, string notNullInit, string nullInit) +{ +#> + var <#=name#> = <#=isNotNull#> ? + <#=notNullInit#> : + <#=nullInit#>; + +<#+ +} + +public const string TemplateId = "CSharp_DbContext_Context_EF6"; + +public class CodeStringGenerator +{ + private readonly CodeGenerationTools _code; + private readonly TypeMapper _typeMapper; + private readonly MetadataTools _ef; + + public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(typeMapper, "typeMapper"); + ArgumentNotNull(ef, "ef"); + + _code = code; + _typeMapper = typeMapper; + _ef = ef; + } + + public string Property(EdmProperty edmProperty) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + Accessibility.ForProperty(edmProperty), + _typeMapper.GetTypeName(edmProperty.TypeUsage), + _code.Escape(edmProperty), + _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), + _code.SpaceAfter(Accessibility.ForSetter(edmProperty))); + } + + public string NavigationProperty(NavigationProperty navProp) + { + var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType()); + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)), + navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType, + _code.Escape(navProp), + _code.SpaceAfter(Accessibility.ForGetter(navProp)), + _code.SpaceAfter(Accessibility.ForSetter(navProp))); + } + + public string AccessibilityAndVirtual(string accessibility) + { + return accessibility + (accessibility != "private" ? " virtual" : ""); + } + + public string EntityClassOpening(EntityType entity) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1}partial class {2}{3}", + Accessibility.ForType(entity), + _code.SpaceAfter(_code.AbstractOption(entity)), + _code.Escape(entity), + _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType))); + } + + public string EnumOpening(SimpleType enumType) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} enum {1} : {2}", + Accessibility.ForType(enumType), + _code.Escape(enumType), + _code.Escape(_typeMapper.UnderlyingClrType(enumType))); + } + + public void WriteFunctionParameters(EdmFunction edmFunction, Action writeParameter) + { + var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable)) + { + var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null"; + var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")"; + var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))"; + writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit); + } + } + + public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "{0} IQueryable<{1}> {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + _code.Escape(edmFunction), + string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray())); + } + + public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});", + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + edmFunction.NamespaceName, + edmFunction.Name, + string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()), + _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))); + } + + public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()); + if (includeMergeOption) + { + paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption"; + } + + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + _code.Escape(edmFunction), + paramList); + } + + public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())); + if (includeMergeOption) + { + callParams = ", mergeOption" + callParams; + } + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});", + returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + edmFunction.Name, + callParams); + } + + public string DbSet(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} virtual DbSet<{1}> {2} {{ get; set; }}", + Accessibility.ForReadOnlyProperty(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType), + _code.Escape(entitySet)); + } + + public string DbSetInitializer(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} = Set<{1}>();", + _code.Escape(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType)); + } + + public string UsingDirectives(bool inHeader, bool includeCollections = true) + { + return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion()) + ? string.Format( + CultureInfo.InvariantCulture, + "{0}using System;{1}" + + "{2}", + inHeader ? Environment.NewLine : "", + includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "", + inHeader ? "" : Environment.NewLine) + : ""; + } +} + +public class TypeMapper +{ + private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName"; + + private readonly System.Collections.IList _errors; + private readonly CodeGenerationTools _code; + private readonly MetadataTools _ef; + + public static string FixNamespaces(string typeName) + { + return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial."); + } + + public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(ef, "ef"); + ArgumentNotNull(errors, "errors"); + + _code = code; + _ef = ef; + _errors = errors; + } + + public string GetTypeName(TypeUsage typeUsage) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null); + } + + public string GetTypeName(EdmType edmType) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: null); + } + + public string GetTypeName(TypeUsage typeUsage, string modelNamespace) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace); + } + + public string GetTypeName(EdmType edmType, string modelNamespace) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace); + } + + public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace) + { + if (edmType == null) + { + return null; + } + + var collectionType = edmType as CollectionType; + if (collectionType != null) + { + return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace)); + } + + var typeName = _code.Escape(edmType.MetadataProperties + .Where(p => p.Name == ExternalTypeNameAttributeName) + .Select(p => (string)p.Value) + .FirstOrDefault()) + ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ? + _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) : + _code.Escape(edmType)); + + if (edmType is StructuralType) + { + return typeName; + } + + if (edmType is SimpleType) + { + var clrType = UnderlyingClrType(edmType); + if (!IsEnumType(edmType)) + { + typeName = _code.Escape(clrType); + } + + typeName = FixNamespaces(typeName); + + return clrType.IsValueType && isNullable == true ? + String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) : + typeName; + } + + throw new ArgumentException("edmType"); + } + + public Type UnderlyingClrType(EdmType edmType) + { + ArgumentNotNull(edmType, "edmType"); + + var primitiveType = edmType as PrimitiveType; + if (primitiveType != null) + { + return primitiveType.ClrEquivalentType; + } + + if (IsEnumType(edmType)) + { + return GetEnumUnderlyingType(edmType).ClrEquivalentType; + } + + return typeof(object); + } + + public object GetEnumMemberValue(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var valueProperty = enumMember.GetType().GetProperty("Value"); + return valueProperty == null ? null : valueProperty.GetValue(enumMember, null); + } + + public string GetEnumMemberName(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var nameProperty = enumMember.GetType().GetProperty("Name"); + return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null); + } + + public System.Collections.IEnumerable GetEnumMembers(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var membersProperty = enumType.GetType().GetProperty("Members"); + return membersProperty != null + ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null) + : Enumerable.Empty(); + } + + public bool EnumIsFlags(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var isFlagsProperty = enumType.GetType().GetProperty("IsFlags"); + return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null); + } + + public bool IsEnumType(GlobalItem edmType) + { + ArgumentNotNull(edmType, "edmType"); + + return edmType.GetType().Name == "EnumType"; + } + + public PrimitiveType GetEnumUnderlyingType(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null); + } + + public string CreateLiteral(object value) + { + if (value == null || value.GetType() != typeof(TimeSpan)) + { + return _code.CreateLiteral(value); + } + + return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks); + } + + public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable types, string sourceFile) + { + ArgumentNotNull(types, "types"); + ArgumentNotNull(sourceFile, "sourceFile"); + + var hash = new HashSet(StringComparer.InvariantCultureIgnoreCase); + if (types.Any(item => !hash.Add(item))) + { + _errors.Add( + new CompilerError(sourceFile, -1, -1, "6023", + String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict")))); + return false; + } + return true; + } + + public IEnumerable GetEnumItemsToGenerate(IEnumerable itemCollection) + { + return GetItemsToGenerate(itemCollection) + .Where(e => IsEnumType(e)); + } + + public IEnumerable GetItemsToGenerate(IEnumerable itemCollection) where T: EdmType + { + return itemCollection + .OfType() + .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName)) + .OrderBy(i => i.Name); + } + + public IEnumerable GetAllGlobalItems(IEnumerable itemCollection) + { + return itemCollection + .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i)) + .Select(g => GetGlobalItemName(g)); + } + + public string GetGlobalItemName(GlobalItem item) + { + if (item is EdmType) + { + return ((EdmType)item).Name; + } + else + { + return ((EntityContainer)item).Name; + } + } + + public IEnumerable GetSimpleProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetSimpleProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetPropertiesWithDefaultValues(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetPropertiesWithDefaultValues(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type); + } + + public IEnumerable GetCollectionNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many); + } + + public FunctionParameter GetReturnParameter(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters"); + return returnParamsProperty == null + ? edmFunction.ReturnParameter + : ((IEnumerable)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault(); + } + + public bool IsComposable(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute"); + return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null); + } + + public IEnumerable GetParameters(EdmFunction edmFunction) + { + return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + } + + public TypeUsage GetReturnType(EdmFunction edmFunction) + { + var returnParam = GetReturnParameter(edmFunction); + return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage); + } + + public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption) + { + var returnType = GetReturnType(edmFunction); + return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType; + } +} + +public static void ArgumentNotNull(T arg, string name) where T : class +{ + if (arg == null) + { + throw new ArgumentNullException(name); + } +} +#> \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Designer.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Designer.cs new file mode 100644 index 0000000..8457b97 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.Designer.cs @@ -0,0 +1,10 @@ +// T4 code generation is enabled for model 'c:\users\deepak pahuja\documents\visual studio 2015\Projects\TicTacToe\TicTacToe\Models\Model1.edmx'. +// To enable legacy code generation, change the value of the 'Code Generation Strategy' designer +// property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model +// is open in the designer. + +// If no context and entity classes have been generated, it may be because you created an empty model but +// have not yet chosen which version of Entity Framework to use. To generate a context class and entity +// classes for your model, open the model in the designer, right-click on the designer surface, and +// select 'Update Model from Database...', 'Generate Database from Model...', or 'Add Code Generation +// Item...'. \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.cs new file mode 100644 index 0000000..7cc0662 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.cs @@ -0,0 +1,9 @@ +//------------------------------------------------------------------------------ +// +// This code was generated from a template. +// +// Manual changes to this file may cause unexpected behavior in your application. +// Manual changes to this file will be overwritten if the code is regenerated. +// +//------------------------------------------------------------------------------ + diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx new file mode 100644 index 0000000..494682e --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx.diagram b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx.diagram new file mode 100644 index 0000000..20c07a4 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.edmx.diagram @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.tt b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.tt new file mode 100644 index 0000000..b0e43c7 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/Model1.tt @@ -0,0 +1,733 @@ +<#@ template language="C#" debug="false" hostspecific="true"#> +<#@ include file="EF6.Utility.CS.ttinclude"#><#@ + output extension=".cs"#><# + +const string inputFile = @"Model1.edmx"; +var textTransform = DynamicTextTransformation.Create(this); +var code = new CodeGenerationTools(this); +var ef = new MetadataTools(this); +var typeMapper = new TypeMapper(code, ef, textTransform.Errors); +var fileManager = EntityFrameworkTemplateFileManager.Create(this); +var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile); +var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef); + +if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile)) +{ + return string.Empty; +} + +WriteHeader(codeStringGenerator, fileManager); + +foreach (var entity in typeMapper.GetItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(entity.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false)#> +<#=codeStringGenerator.EntityClassOpening(entity)#> +{ +<# + var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(entity); + var collectionNavigationProperties = typeMapper.GetCollectionNavigationProperties(entity); + var complexProperties = typeMapper.GetComplexProperties(entity); + + if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any()) + { +#> + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] + public <#=code.Escape(entity)#>() + { +<# + foreach (var edmProperty in propertiesWithDefaultValues) + { +#> + this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>; +<# + } + + foreach (var navigationProperty in collectionNavigationProperties) + { +#> + this.<#=code.Escape(navigationProperty)#> = new HashSet<<#=typeMapper.GetTypeName(navigationProperty.ToEndMember.GetEntityType())#>>(); +<# + } + + foreach (var complexProperty in complexProperties) + { +#> + this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>(); +<# + } +#> + } + +<# + } + + var simpleProperties = typeMapper.GetSimpleProperties(entity); + if (simpleProperties.Any()) + { + foreach (var edmProperty in simpleProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } + + if (complexProperties.Any()) + { +#> + +<# + foreach(var complexProperty in complexProperties) + { +#> + <#=codeStringGenerator.Property(complexProperty)#> +<# + } + } + + var navigationProperties = typeMapper.GetNavigationProperties(entity); + if (navigationProperties.Any()) + { +#> + +<# + foreach (var navigationProperty in navigationProperties) + { + if (navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many) + { +#> + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] +<# + } +#> + <#=codeStringGenerator.NavigationProperty(navigationProperty)#> +<# + } + } +#> +} +<# + EndNamespace(code); +} + +foreach (var complex in typeMapper.GetItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(complex.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#> +<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#> +{ +<# + var complexProperties = typeMapper.GetComplexProperties(complex); + var propertiesWithDefaultValues = typeMapper.GetPropertiesWithDefaultValues(complex); + + if (propertiesWithDefaultValues.Any() || complexProperties.Any()) + { +#> + public <#=code.Escape(complex)#>() + { +<# + foreach (var edmProperty in propertiesWithDefaultValues) + { +#> + this.<#=code.Escape(edmProperty)#> = <#=typeMapper.CreateLiteral(edmProperty.DefaultValue)#>; +<# + } + + foreach (var complexProperty in complexProperties) + { +#> + this.<#=code.Escape(complexProperty)#> = new <#=typeMapper.GetTypeName(complexProperty.TypeUsage)#>(); +<# + } +#> + } + +<# + } + + var simpleProperties = typeMapper.GetSimpleProperties(complex); + if (simpleProperties.Any()) + { + foreach(var edmProperty in simpleProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } + + if (complexProperties.Any()) + { +#> + +<# + foreach(var edmProperty in complexProperties) + { +#> + <#=codeStringGenerator.Property(edmProperty)#> +<# + } + } +#> +} +<# + EndNamespace(code); +} + +foreach (var enumType in typeMapper.GetEnumItemsToGenerate(itemCollection)) +{ + fileManager.StartNewFile(enumType.Name + ".cs"); + BeginNamespace(code); +#> +<#=codeStringGenerator.UsingDirectives(inHeader: false, includeCollections: false)#> +<# + if (typeMapper.EnumIsFlags(enumType)) + { +#> +[Flags] +<# + } +#> +<#=codeStringGenerator.EnumOpening(enumType)#> +{ +<# + var foundOne = false; + + foreach (MetadataItem member in typeMapper.GetEnumMembers(enumType)) + { + foundOne = true; +#> + <#=code.Escape(typeMapper.GetEnumMemberName(member))#> = <#=typeMapper.GetEnumMemberValue(member)#>, +<# + } + + if (foundOne) + { + this.GenerationEnvironment.Remove(this.GenerationEnvironment.Length - 3, 1); + } +#> +} +<# + EndNamespace(code); +} + +fileManager.Process(); + +#> +<#+ + +public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager) +{ + fileManager.StartHeader(); +#> +//------------------------------------------------------------------------------ +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine1")#> +// +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine2")#> +// <#=CodeGenerationTools.GetResourceString("Template_GeneratedCodeCommentLine3")#> +// +//------------------------------------------------------------------------------ +<#=codeStringGenerator.UsingDirectives(inHeader: true)#> +<#+ + fileManager.EndBlock(); +} + +public void BeginNamespace(CodeGenerationTools code) +{ + var codeNamespace = code.VsNamespaceSuggestion(); + if (!String.IsNullOrEmpty(codeNamespace)) + { +#> +namespace <#=code.EscapeNamespace(codeNamespace)#> +{ +<#+ + PushIndent(" "); + } +} + +public void EndNamespace(CodeGenerationTools code) +{ + if (!String.IsNullOrEmpty(code.VsNamespaceSuggestion())) + { + PopIndent(); +#> +} +<#+ + } +} + +public const string TemplateId = "CSharp_DbContext_Types_EF6"; + +public class CodeStringGenerator +{ + private readonly CodeGenerationTools _code; + private readonly TypeMapper _typeMapper; + private readonly MetadataTools _ef; + + public CodeStringGenerator(CodeGenerationTools code, TypeMapper typeMapper, MetadataTools ef) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(typeMapper, "typeMapper"); + ArgumentNotNull(ef, "ef"); + + _code = code; + _typeMapper = typeMapper; + _ef = ef; + } + + public string Property(EdmProperty edmProperty) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + Accessibility.ForProperty(edmProperty), + _typeMapper.GetTypeName(edmProperty.TypeUsage), + _code.Escape(edmProperty), + _code.SpaceAfter(Accessibility.ForGetter(edmProperty)), + _code.SpaceAfter(Accessibility.ForSetter(edmProperty))); + } + + public string NavigationProperty(NavigationProperty navProp) + { + var endType = _typeMapper.GetTypeName(navProp.ToEndMember.GetEntityType()); + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2} {{ {3}get; {4}set; }}", + AccessibilityAndVirtual(Accessibility.ForNavigationProperty(navProp)), + navProp.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many ? ("ICollection<" + endType + ">") : endType, + _code.Escape(navProp), + _code.SpaceAfter(Accessibility.ForGetter(navProp)), + _code.SpaceAfter(Accessibility.ForSetter(navProp))); + } + + public string AccessibilityAndVirtual(string accessibility) + { + return accessibility + (accessibility != "private" ? " virtual" : ""); + } + + public string EntityClassOpening(EntityType entity) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1}partial class {2}{3}", + Accessibility.ForType(entity), + _code.SpaceAfter(_code.AbstractOption(entity)), + _code.Escape(entity), + _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType))); + } + + public string EnumOpening(SimpleType enumType) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} enum {1} : {2}", + Accessibility.ForType(enumType), + _code.Escape(enumType), + _code.Escape(_typeMapper.UnderlyingClrType(enumType))); + } + + public void WriteFunctionParameters(EdmFunction edmFunction, Action writeParameter) + { + var parameters = FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable)) + { + var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null"; + var notNullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")"; + var nullInit = "new ObjectParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + TypeMapper.FixNamespaces(parameter.RawClrTypeName) + "))"; + writeParameter(parameter.LocalVariableName, isNotNull, notNullInit, nullInit); + } + } + + public string ComposableFunctionMethod(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "{0} IQueryable<{1}> {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + _code.Escape(edmFunction), + string.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray())); + } + + public string ComposableCreateQuery(EdmFunction edmFunction, string modelNamespace) + { + var parameters = _typeMapper.GetParameters(edmFunction); + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.CreateQuery<{0}>(\"[{1}].[{2}]({3})\"{4});", + _typeMapper.GetTypeName(_typeMapper.GetReturnType(edmFunction), modelNamespace), + edmFunction.NamespaceName, + edmFunction.Name, + string.Join(", ", parameters.Select(p => "@" + p.EsqlParameterName).ToArray()), + _code.StringBefore(", ", string.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))); + } + + public string FunctionMethod(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var paramList = String.Join(", ", parameters.Select(p => TypeMapper.FixNamespaces(p.FunctionParameterType) + " " + p.FunctionParameterName).ToArray()); + if (includeMergeOption) + { + paramList = _code.StringAfter(paramList, ", ") + "MergeOption mergeOption"; + } + + return string.Format( + CultureInfo.InvariantCulture, + "{0} {1} {2}({3})", + AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction)), + returnType == null ? "int" : "ObjectResult<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + _code.Escape(edmFunction), + paramList); + } + + public string ExecuteFunction(EdmFunction edmFunction, string modelNamespace, bool includeMergeOption) + { + var parameters = _typeMapper.GetParameters(edmFunction); + var returnType = _typeMapper.GetReturnType(edmFunction); + + var callParams = _code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray())); + if (includeMergeOption) + { + callParams = ", mergeOption" + callParams; + } + + return string.Format( + CultureInfo.InvariantCulture, + "return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction{0}(\"{1}\"{2});", + returnType == null ? "" : "<" + _typeMapper.GetTypeName(returnType, modelNamespace) + ">", + edmFunction.Name, + callParams); + } + + public string DbSet(EntitySet entitySet) + { + return string.Format( + CultureInfo.InvariantCulture, + "{0} virtual DbSet<{1}> {2} {{ get; set; }}", + Accessibility.ForReadOnlyProperty(entitySet), + _typeMapper.GetTypeName(entitySet.ElementType), + _code.Escape(entitySet)); + } + + public string UsingDirectives(bool inHeader, bool includeCollections = true) + { + return inHeader == string.IsNullOrEmpty(_code.VsNamespaceSuggestion()) + ? string.Format( + CultureInfo.InvariantCulture, + "{0}using System;{1}" + + "{2}", + inHeader ? Environment.NewLine : "", + includeCollections ? (Environment.NewLine + "using System.Collections.Generic;") : "", + inHeader ? "" : Environment.NewLine) + : ""; + } +} + +public class TypeMapper +{ + private const string ExternalTypeNameAttributeName = @"http://schemas.microsoft.com/ado/2006/04/codegeneration:ExternalTypeName"; + + private readonly System.Collections.IList _errors; + private readonly CodeGenerationTools _code; + private readonly MetadataTools _ef; + + public TypeMapper(CodeGenerationTools code, MetadataTools ef, System.Collections.IList errors) + { + ArgumentNotNull(code, "code"); + ArgumentNotNull(ef, "ef"); + ArgumentNotNull(errors, "errors"); + + _code = code; + _ef = ef; + _errors = errors; + } + + public static string FixNamespaces(string typeName) + { + return typeName.Replace("System.Data.Spatial.", "System.Data.Entity.Spatial."); + } + + public string GetTypeName(TypeUsage typeUsage) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace: null); + } + + public string GetTypeName(EdmType edmType) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: null); + } + + public string GetTypeName(TypeUsage typeUsage, string modelNamespace) + { + return typeUsage == null ? null : GetTypeName(typeUsage.EdmType, _ef.IsNullable(typeUsage), modelNamespace); + } + + public string GetTypeName(EdmType edmType, string modelNamespace) + { + return GetTypeName(edmType, isNullable: null, modelNamespace: modelNamespace); + } + + public string GetTypeName(EdmType edmType, bool? isNullable, string modelNamespace) + { + if (edmType == null) + { + return null; + } + + var collectionType = edmType as CollectionType; + if (collectionType != null) + { + return String.Format(CultureInfo.InvariantCulture, "ICollection<{0}>", GetTypeName(collectionType.TypeUsage, modelNamespace)); + } + + var typeName = _code.Escape(edmType.MetadataProperties + .Where(p => p.Name == ExternalTypeNameAttributeName) + .Select(p => (string)p.Value) + .FirstOrDefault()) + ?? (modelNamespace != null && edmType.NamespaceName != modelNamespace ? + _code.CreateFullName(_code.EscapeNamespace(edmType.NamespaceName), _code.Escape(edmType)) : + _code.Escape(edmType)); + + if (edmType is StructuralType) + { + return typeName; + } + + if (edmType is SimpleType) + { + var clrType = UnderlyingClrType(edmType); + if (!IsEnumType(edmType)) + { + typeName = _code.Escape(clrType); + } + + typeName = FixNamespaces(typeName); + + return clrType.IsValueType && isNullable == true ? + String.Format(CultureInfo.InvariantCulture, "Nullable<{0}>", typeName) : + typeName; + } + + throw new ArgumentException("edmType"); + } + + public Type UnderlyingClrType(EdmType edmType) + { + ArgumentNotNull(edmType, "edmType"); + + var primitiveType = edmType as PrimitiveType; + if (primitiveType != null) + { + return primitiveType.ClrEquivalentType; + } + + if (IsEnumType(edmType)) + { + return GetEnumUnderlyingType(edmType).ClrEquivalentType; + } + + return typeof(object); + } + + public object GetEnumMemberValue(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var valueProperty = enumMember.GetType().GetProperty("Value"); + return valueProperty == null ? null : valueProperty.GetValue(enumMember, null); + } + + public string GetEnumMemberName(MetadataItem enumMember) + { + ArgumentNotNull(enumMember, "enumMember"); + + var nameProperty = enumMember.GetType().GetProperty("Name"); + return nameProperty == null ? null : (string)nameProperty.GetValue(enumMember, null); + } + + public System.Collections.IEnumerable GetEnumMembers(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var membersProperty = enumType.GetType().GetProperty("Members"); + return membersProperty != null + ? (System.Collections.IEnumerable)membersProperty.GetValue(enumType, null) + : Enumerable.Empty(); + } + + public bool EnumIsFlags(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + var isFlagsProperty = enumType.GetType().GetProperty("IsFlags"); + return isFlagsProperty != null && (bool)isFlagsProperty.GetValue(enumType, null); + } + + public bool IsEnumType(GlobalItem edmType) + { + ArgumentNotNull(edmType, "edmType"); + + return edmType.GetType().Name == "EnumType"; + } + + public PrimitiveType GetEnumUnderlyingType(EdmType enumType) + { + ArgumentNotNull(enumType, "enumType"); + + return (PrimitiveType)enumType.GetType().GetProperty("UnderlyingType").GetValue(enumType, null); + } + + public string CreateLiteral(object value) + { + if (value == null || value.GetType() != typeof(TimeSpan)) + { + return _code.CreateLiteral(value); + } + + return string.Format(CultureInfo.InvariantCulture, "new TimeSpan({0})", ((TimeSpan)value).Ticks); + } + + public bool VerifyCaseInsensitiveTypeUniqueness(IEnumerable types, string sourceFile) + { + ArgumentNotNull(types, "types"); + ArgumentNotNull(sourceFile, "sourceFile"); + + var hash = new HashSet(StringComparer.InvariantCultureIgnoreCase); + if (types.Any(item => !hash.Add(item))) + { + _errors.Add( + new CompilerError(sourceFile, -1, -1, "6023", + String.Format(CultureInfo.CurrentCulture, CodeGenerationTools.GetResourceString("Template_CaseInsensitiveTypeConflict")))); + return false; + } + return true; + } + + public IEnumerable GetEnumItemsToGenerate(IEnumerable itemCollection) + { + return GetItemsToGenerate(itemCollection) + .Where(e => IsEnumType(e)); + } + + public IEnumerable GetItemsToGenerate(IEnumerable itemCollection) where T: EdmType + { + return itemCollection + .OfType() + .Where(i => !i.MetadataProperties.Any(p => p.Name == ExternalTypeNameAttributeName)) + .OrderBy(i => i.Name); + } + + public IEnumerable GetAllGlobalItems(IEnumerable itemCollection) + { + return itemCollection + .Where(i => i is EntityType || i is ComplexType || i is EntityContainer || IsEnumType(i)) + .Select(g => GetGlobalItemName(g)); + } + + public string GetGlobalItemName(GlobalItem item) + { + if (item is EdmType) + { + return ((EdmType)item).Name; + } + else + { + return ((EntityContainer)item).Name; + } + } + + public IEnumerable GetSimpleProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetSimpleProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetComplexProperties(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == type); + } + + public IEnumerable GetPropertiesWithDefaultValues(EntityType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetPropertiesWithDefaultValues(ComplexType type) + { + return type.Properties.Where(p => p.TypeUsage.EdmType is SimpleType && p.DeclaringType == type && p.DefaultValue != null); + } + + public IEnumerable GetNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type); + } + + public IEnumerable GetCollectionNavigationProperties(EntityType type) + { + return type.NavigationProperties.Where(np => np.DeclaringType == type && np.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many); + } + + public FunctionParameter GetReturnParameter(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var returnParamsProperty = edmFunction.GetType().GetProperty("ReturnParameters"); + return returnParamsProperty == null + ? edmFunction.ReturnParameter + : ((IEnumerable)returnParamsProperty.GetValue(edmFunction, null)).FirstOrDefault(); + } + + public bool IsComposable(EdmFunction edmFunction) + { + ArgumentNotNull(edmFunction, "edmFunction"); + + var isComposableProperty = edmFunction.GetType().GetProperty("IsComposableAttribute"); + return isComposableProperty != null && (bool)isComposableProperty.GetValue(edmFunction, null); + } + + public IEnumerable GetParameters(EdmFunction edmFunction) + { + return FunctionImportParameter.Create(edmFunction.Parameters, _code, _ef); + } + + public TypeUsage GetReturnType(EdmFunction edmFunction) + { + var returnParam = GetReturnParameter(edmFunction); + return returnParam == null ? null : _ef.GetElementType(returnParam.TypeUsage); + } + + public bool GenerateMergeOptionFunction(EdmFunction edmFunction, bool includeMergeOption) + { + var returnType = GetReturnType(edmFunction); + return !includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType; + } +} + +public static void ArgumentNotNull(T arg, string name) where T : class +{ + if (arg == null) + { + throw new ArgumentNullException(name); + } +} +#> \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Models/User.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Models/User.cs new file mode 100644 index 0000000..b4211a5 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Models/User.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated from a template. +// +// Manual changes to this file may cause unexpected behavior in your application. +// Manual changes to this file will be overwritten if the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TicTacToe.Models +{ + using System; + using System.Collections.Generic; + + public partial class User + { + public int Id { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public Nullable Score { get; set; } + } +} diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Properties/AssemblyInfo.cs b/DeepakPahuja002/TicTacToe/TicTacToe/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..225a797 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("TicTacToe")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("TicTacToe")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("af84e95e-2524-45bb-8692-f9e68ad9375c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj b/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj new file mode 100644 index 0000000..9cc58c6 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj @@ -0,0 +1,237 @@ + + + + + + + Debug + AnyCPU + + + 2.0 + {AF84E95E-2524-45BB-8692-F9E68AD9375C} + {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + TicTacToe + TicTacToe + v4.5.2 + true + + + + + + + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\ + TRACE + prompt + 4 + + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll + True + + + ..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll + True + + + ..\packages\Microsoft.ApplicationInsights.Agent.Intercept.1.2.1\lib\net45\Microsoft.AI.Agent.Intercept.dll + True + + + ..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.0.0\lib\net45\Microsoft.AI.DependencyCollector.dll + True + + + ..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.0.0\lib\net45\Microsoft.AI.PerfCounterCollector.dll + True + + + ..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.0.0\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll + True + + + ..\packages\Microsoft.ApplicationInsights.Web.2.0.0\lib\net45\Microsoft.AI.Web.dll + True + + + ..\packages\Microsoft.ApplicationInsights.WindowsServer.2.0.0\lib\net45\Microsoft.AI.WindowsServer.dll + True + + + ..\packages\Microsoft.ApplicationInsights.2.0.0\lib\net45\Microsoft.ApplicationInsights.dll + True + + + ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll + True + + + + ..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll + True + + + + ..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll + True + + + + + ..\packages\Microsoft.AspNet.Cors.5.2.7\lib\net45\System.Web.Cors.dll + True + + + + + + + + + + + + ..\packages\Microsoft.AspNet.WebApi.Core.5.2.7\lib\net45\System.Web.Http.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.Cors.5.2.7\lib\net45\System.Web.Http.Cors.dll + True + + + ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll + True + + + + + + + + + + + + + + PreserveNewest + + + EntityModelCodeGenerator + Model1.Designer.cs + + + Model1.edmx + + + Web.config + + + Web.config + + + + + TextTemplatingFileGenerator + Model1.edmx + Model1.Context.cs + + + TextTemplatingFileGenerator + Model1.edmx + Model1.cs + + + + + + + + + + Global.asax + + + True + True + Model1.Context.tt + + + True + True + Model1.tt + + + True + True + Model1.edmx + + + Model1.tt + + + + + + + + + + + 10.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + + + + + + + + + True + True + 50779 + / + http://localhost:50779/ + False + False + + + False + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj.user b/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj.user new file mode 100644 index 0000000..b075322 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/TicTacToe.csproj.user @@ -0,0 +1,38 @@ + + + + true + 600 + True + False + True + + TicTacToe.Models.TicTacToeEntities1 + False + + + + + + + + CurrentPage + True + False + False + False + + + + + + + + + True + True + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Web.Debug.config b/DeepakPahuja002/TicTacToe/TicTacToe/Web.Debug.config new file mode 100644 index 0000000..2e302f9 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Web.Debug.config @@ -0,0 +1,30 @@ + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Web.Release.config b/DeepakPahuja002/TicTacToe/TicTacToe/Web.Release.config new file mode 100644 index 0000000..c358444 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Web.Release.config @@ -0,0 +1,31 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/Web.config b/DeepakPahuja002/TicTacToe/TicTacToe/Web.config new file mode 100644 index 0000000..748b623 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/Web.config @@ -0,0 +1,62 @@ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..115764007d22b44109adf9ec8f5f311bc0a46076 GIT binary patch literal 13810 zcmeHO-*+2F6_yfb8#_&jLrBx4Eh-dfi@Qkv83zJ5lAXAXjj9m!+wug=Wc zR(;G1yl^;hS`P34htqe?0p2+L0le^6!FN~EN^%r8J!jX>gO%gaW_M=3Z|>Z=bLZ|= zCY#A*{)Z2J)92-LDC{L+NniPOZLSFwGN-IVTli+tcU|9GEX|MQ*0@x{_wE)Z%{=`Z z%N0XMhmzm*c&H_F#&RoR%@Njzyjk&gxOcafpQumOXX=H5J(Xt@>;ggFeg@LLP&hW> zEqa1Kt=2G?=3a#&MbFQXIn zwrF_1zN(S~hByVYvAB7KW1<;yv+7aC)N%C(ztdo}d5aCy7Q(VkjTQa3`y zS9zUF?xCv%>AUE38$G=uJ9i_o80U=hhLOpfM|m!r%^LVanK}2_g>qAA?m|5=zm_J2 zGw*YcOJSK0A*?5b_4Q+_U`4DkC*&(k$S31*)v}htYmDVwW%<$(weA{w{v|du!=|jM z>B8*9B+uWT-55KL#|ug|4LNKiE7ljhyKMGMMbprtcr~Tb`3tU72``{C1x-VT&J;AM zjdLSQe(>;l6eGh!ba{aaxC5Etmr&sAA{E0_j8Jh2#fb4T%8YRtMd@I*?K#~k!;#)& zl2>DAw`wlWS7IM>YuW6Ml-`R~_ zf~Mn*~U^k-bB!rT*{Ya6fPddRdL$G8z)@qIo@lk+{QLnnf2;*z@W z_%-I3OtF3ACJ>$^ju0?whc&n|t?0mF+ycr@;wW=LfWsIgXB8(C(b&>4;OnUXF8MZh zR5ki4nA~>vO@V&PaOF%uXPr}*8p&k5I|>?2hyZ!sA}+`a*Bzk89m(YEo;7hp#F1lHQP?=gkY0TKKb2!49nQfp0O5wR?@ z6?IX@JK*)FQ|8qxt3Gn?g4`cYh1`HB&!X#wnqr92e7*;2zducCaO2uBDszczh9D@5 zh_7O36kUAtE-cMN}I=idjF-<--M9i`IQ`b;ol32l8{|DX2O z$m{RGda zo;s8AM^2f`UA)jBPUGP8kHk53eTYH6|6BtHM>Bf6V(~yja^q&9M|M4}7tN!UiSz_W z|LcTFmw3QE8*%$)JM`{L&?d*NJL!GI2Q?t_lOX@^6DGgHWxeR*4F#9a$$nr9qCW-t z|2bj$kA-LZd#bIr6|8TU-?P^K}IG#!gUx=(iSShb-FL~aJ; z{&uQzKAvXZln~+DApF@06F!FGfS3cZoCVAOrpS^!?2_-A2!ZVidU0!(e2wE?XVYK7 zE7H0z-S(kxknMQxE@(V=Fdm9$0FUAux#;b3?w$SH)9+T}Fj}r1-NPH$?jf`qZ(jWo z!D=f^)~#svoUFbJIF<@r=hb7R{1jA6e$QU!dm8UcDYf7O<$Kt(^X6oa`9Aub2jcSg-}MA(FFVekaoI|IN{OY zeh8%9G?7T6kyy)Ice6Ai?76f@8DY~X?*VBu%~29a5g?5;K}wP#7~Y6vR|1$!6AT_S zmw^UFU^6H@73e9 z_37OQ0RMIRnt8=iw|<=PXkv(VWzz6WyXLkxk?RyXwNG5+C!6n+U8@8aST(b0|LIJ)Nt2mWWGf z`OnN5PDAgLp8SN<64y5_UL1Y|tJnFAQpOkkP{CM3@hFu|Wt0-iB8A5 z7G<3ElF3rG*;98%DgBH-qm+V1e2t%?xN%S%_^XFQ<7aq!_27ZSYQ^j5i=Z(65{~#Qlt{3FZ4P8_cIIkc|SZlvvBbbLN+e_A1AAqDF6Tf literal 0 HcmV?d00001 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.Designer.cs.dll b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.Designer.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..ef75b1039e3e2825325da9e620553cb8cf040632 GIT binary patch literal 2048 zcmeHH%}Z2K6#u>PYt%GNlO(9?jM46)j08c%IF4wcDUKS2kZ+!s@xq&Thxgw2(IVVL zwCfLO7p;O;Lee5yL_62*!evVrts<~<-h0zbAOp3O4s*`=osWC(Ip^Ma^ABI31wbqD z$q8^knkgH~=3p03e&>&0nc&PZT!du^?D+7VKs+Zc>~P@0u~~8y37LSPLDMA3Lx2#ktBPz!8QZA6Oet0hflGvfw*q6LK48b z=}AZ1aSd5=b51*P17(3+gZWqRJN3`RwI$GoMFCXk41=BjK)J%*oDr|)xou6DV`gS7 zGk%jdYlA~_pE&)5+NMK}85aUixh0<<`si%F%k)YCgM|6&(laY}@}x(}o?|=b=ptz* zav2?iKqnhNj0}dN+IbJ|fyc|tIO<8px*gZ?fkrtK$^pE=d3>cTrYMv9=)`N1{UqBl zOtK3mx(S&WK#JsLOrmvcm*PmG|qHoJ!=FE2Zzp*A0_yuU%x;X#< literal 0 HcmV?d00001 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.cs.dll b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.Model1.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..334b64e94d638633a7519918174f4f28a5fef153 GIT binary patch literal 2048 zcmeHH%}>-&5dU>qU;#lk7!qQlk459HS+X27F=knopaz6c(8O#aZFyOmw0)bl%U6uy z;=!AVCvP6S$&p0j-yp_=M-Lo5`3D#y&a_>34}?UoIO)v%=HtCLGq3H!Z)Iom6MTt`NZ?7JPd9?9*9>?{wTVsQg$-DJfifHggk zuCmh_%H-yp9^wuv1CO3%`hnq*+eVAHW>m=;bq$J@rY2Rv2Z-Wu<2F24D^^C>^= z?IJ5QE!QQWbrZ<b1CClaP;Il?GgVSI@g~oEYg2V>0EXF Jzu9yGzX9Aev@iew literal 0 HcmV?d00001 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.TicTacToe.Designer.cs.dll b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TempPE/Models.TicTacToe.Designer.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..1de673b24bb5a9df04b5ab0012d54ee4388e4d2a GIT binary patch literal 2048 zcmeHH&r1|>6#vZnYt{UPB1%zTcZ)g=#(D`N)^$w{O>x(P5OQ|>vVLK9zA`gw+9A9Y z)Tw`<4ne2r5C}c&p{{>ZK|yFXG~Q@&XDblI~i!nRyj2cjf}S9OJQMSi{@ zDtc9#U0ofQFV-w?X&}=M5i$t6_tp*gK5%&I7TV+KTxi4CuhW~d2SnH=BSw& z&0N31o3+3pxkH?OLT%F_-x(JIPq}5EAO`4czRUDd0YilO>e5q7GkMb2$ev|8=jak? zCUO~V13)_)KaC6qquO~7?t#b4%sA>v#<~?(u}7nv3S~b&pa+MP#S~?7AMJQYvX5jd zhDmn7L?{v1zB7{je2QaOgHEBYSodqQ1NZ;IjV%bELF>8tK`V> zfCf>j1`-pxvaTE}P}*ITjDBG{O;u_4TR_PU_x1nt5#|_bq@)6;! z0yAF^-@Jddd;8hzFK>H(b$mv%FpOlAfYCyruP^!W@$$Xlv4iJHBmQnK^7xC1!TX-I zepkDbo3>o%c@)aBpyA>#WM#En)nxZ@KR@Xw`nyhT|w-RHSg5j<6h2ST2dWs!Dx$ zc;ISu^-2*~)MA)#uCKSN9V0CUwW+YFSm;e;NDJZ|F)$inigDjeZH)~wqBA|nJ?B*Z zbaZ60i)cR$EQj!9nFEGSj-2ilK(Z?%N%nk~t^0D@CwqvOPqAQtsBf|Y62OM;N?Vyx z4>@vkPJ+0LazMVz{44m4=4ayGV(7(+0IF0&W9L6mzH}$AMW=ahThscKo}J3xxXG9G z!X~*-oOwoLQ;{!>OTKG4HIE?TRGZ&2vsOZqFh5;pZf&7J`U2UDZ0BuNAX!X7U{UcttWrGJy$_1JE%@ zNXHn`BrjnG@m)Id3+<7`9kgkb&P8-KLobhQ9m8LH- ztLhEQHhfDttI{^M1LSq$t4+tZ>XOqaRIzN!-|0lDgtR@qY?)=lEGwy-o?f+WX8a)r z-Sm}<(vIiLx?Zr1nxj15GQGAds;GyZNw*~3Ez6W%)IPl*-yFOlPx>}>)cUyhxcGYE z)5Qm~xvz)|O-uF&XuSkdspR{o>-Q$6k6$FU=y!6N*IkZ{-*=71UF8(FP1)f2%bTux z;%SuE7d{J)((Ppe-x-UJ-HqDc?a=pVR=EY+UNS5v+`W{+LO9yGMt21N65Z#|1Qy|c POEP;Vru{$UZyWdtd{wnw literal 0 HcmV?d00001 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csproj.FileListAbsolute.txt b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..85ac89e --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csproj.FileListAbsolute.txt @@ -0,0 +1,48 @@ +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\ApplicationInsights.config +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\csc.exe +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.Build.Tasks.CodeAnalysis.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.CodeAnalysis.CSharp.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.CodeAnalysis.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.CodeAnalysis.VisualBasic.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.CSharp.Core.targets +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\Microsoft.VisualBasic.Core.targets +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\System.Collections.Immutable.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\System.Reflection.Metadata.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\vbc.exe +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\VBCSCompiler.exe +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\roslyn\VBCSCompiler.exe.config +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\TicTacToe.dll.config +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\TicTacToe.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\TicTacToe.pdb +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\EntityFramework.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\EntityFramework.SqlServer.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.Agent.Intercept.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.DependencyCollector.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.PerfCounterCollector.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.ServerTelemetryChannel.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.Web.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.WindowsServer.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.ApplicationInsights.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\EntityFramework.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\EntityFramework.SqlServer.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.DependencyCollector.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.ServerTelemetryChannel.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.Web.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.AI.WindowsServer.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.ApplicationInsights.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\obj\Debug\TicTacToe.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\obj\Debug\TicTacToe.pdb +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Newtonsoft.Json.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Net.Http.Formatting.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.WebHost.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\Newtonsoft.Json.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Net.Http.Formatting.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.WebHost.xml +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\obj\Debug\TicTacToe.csprojResolveAssemblyReference.cache +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Cors.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.Cors.dll +C:\Users\Deepak Pahuja\Documents\Visual Studio 2015\Projects\TicTacToe\TicTacToe\bin\System.Web.Http.Cors.xml diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csprojResolveAssemblyReference.cache b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..37c0a8b544589b4819b3ada1c792b0089f7b105e GIT binary patch literal 106450 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 Ch`Sj8 literal 0 HcmV?d00001 diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.pdb b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/TicTacToe.pdb new file mode 100644 index 0000000000000000000000000000000000000000..595778abe85b20cd3f421f3af95ad5317a32fdda GIT binary patch literal 24064 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 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.msl b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.msl new file mode 100644 index 0000000..18377eb --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.msl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.ssdl b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.ssdl new file mode 100644 index 0000000..c8837b9 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/obj/Debug/edmxResourcesToEmbed/Models/Model1.ssdl @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/TicTacToe/TicTacToe/packages.config b/DeepakPahuja002/TicTacToe/TicTacToe/packages.config new file mode 100644 index 0000000..ef15ee6 --- /dev/null +++ b/DeepakPahuja002/TicTacToe/TicTacToe/packages.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/DeepakPahuja002/css/game.css b/DeepakPahuja002/css/game.css new file mode 100644 index 0000000..03d63aa --- /dev/null +++ b/DeepakPahuja002/css/game.css @@ -0,0 +1,97 @@ +*{ + padding: 0px; + margin: 0px; + font-family: 'Roboto', sans-serif; + color: white; +} +h1{ + width: 100%; + text-align: center; + padding-top: 30px; +} +.background_pic{ + height: 100vh; + background-image: url(https://images.unsplash.com/photo-1536553176585-67a46418b7d1?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=882&q=80); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + width: 100%; + +} +.overlay { + background-color: rgba(0, 0, 0, 0.7); + top: 0; + left: 0; + width: 100%; + height: 100vh; + position: relative; + z-index: 1; +} +#container{ + width: 350px; + height: 300px; + margin: 0 auto; +} +#reset_btn_container{ + background-color: green; + border-radius: 15px; + padding: 10px; + width: 150px; + margin: 15px auto; + text-align: center; + cursor: pointer; +} +#reset_btn_container:hover{ + background-color: orange; + transition: all 0.3s ease-in-out; +} +#game{ + position: relative; + top: -26px; + left:-10px; + width: 100%; + padding: 10px; +} +li{ + list-style-type: none; + width: 100px; + height: 100px; + margin: 5px; + float: left; + text-align: center; + border-radius: 15px; + font-size: 60px; + line-height: 80px; +} +#scoreShow{ + text-align: center; + width: 100%; + font-size: 30px; + margin: 40px auto 10px auto; +} +button{ + height: 100%; + width: 100%; + border: none; + background-color: darkgray; + border-radius: 15px; + margin: 15px; +} +button:hover{ + background-color: red; + transition: all 0.3s ease-in-out; +} +.o{ + color: white !important; + text-align: center; + font-size: 60px; + line-height: 80px; + background-color:green; + } +.x{ + color: white !important; + text-align: center; + line-height: 80px; + font-size: 60px; + background-color: red; +} \ No newline at end of file diff --git a/DeepakPahuja002/css/main.css b/DeepakPahuja002/css/main.css new file mode 100644 index 0000000..b3b068d --- /dev/null +++ b/DeepakPahuja002/css/main.css @@ -0,0 +1,105 @@ +ul.navbar-nav{ + float: right; +} +.navbar-default{ + padding: 10px 40px; +} +.navbar-header{ + width: 200px; +} +.background_pic{ + height: 100vh; + background-image: url(https://images.unsplash.com/photo-1536553176585-67a46418b7d1?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=882&q=80); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + width: 100%; + +} +.overlay { + background-color: rgba(0, 0, 0, 0.7); + top: 0; + left: 0; + width: 100%; + height: 100vh; + position: relative; + z-index: 1; +} +.container{ + background-color: white; + border-radius: 15px; + box-sizing: border-box; + padding: 50px ; + color: black; + margin-top: 60px; + padding-top: 30px; + max-width: 500px; +} +.navbar-default .navbar-nav>li>a{ + color: white; +} +.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:focus, .navbar-default .navbar-nav>.active>a:hover{ + color: black; + font-weight: 600; + background-color: greenyellow; + border-radius: 10px; +} +.navbar-nav>li{ + border-radius: 15px; +} +.active{ + background-color: green; + color: green; +} + +////////////////////////////////// Navbar code above this point ////////////////////////////// + + +.btn{ + width: 100%; + border-radius: 15px; +} +.col .col-lg-6{ + width: 100%; +} +#sign_in_options{ + margin-top: 15px;; +} +.sign_in_options_button{ + padding: 10px; + color: white; + width: 100%; + border-radius: 10px; + border-style: none; +} +.sign_in_options_button:hover{ + box-shadow: 5px 5px 5px 1px gray; +} +.google{ +background-color: #d34836; +} +.facebook{ +background-color: #4267b2; +} +.login_heading{ + text-align: center; + max-width: 50px; + margin: 0 auto; + width: 100%; + margin: 150px; + font-size: 30px; + font-weight: 600; + letter-spacing: 2px; +} +div#go_to_signup_page{ + margin-top: 20px; +} +.go_to_signup_page{ + color:blue; + outline-color: none; + text-decoration: underline; + margin-left: 70px; +} + + + diff --git a/DeepakPahuja002/game.html b/DeepakPahuja002/game.html new file mode 100644 index 0000000..0928001 --- /dev/null +++ b/DeepakPahuja002/game.html @@ -0,0 +1,39 @@ + + + + + + + Tic Tac Toe Game + + + + + + + +
+
+

Tic Tac Toe

+ +
+ +
+
    +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
  • +
+
+
 
+
+
+ + + \ No newline at end of file diff --git a/DeepakPahuja002/index.html b/DeepakPahuja002/index.html index f5c3b88..721fec8 100644 --- a/DeepakPahuja002/index.html +++ b/DeepakPahuja002/index.html @@ -5,27 +5,78 @@ Tic Tac Toe Game - - - + + + + + + -

Tic Tac Toe

+
+
+
+ + + + + + +
+ + +
+
+
+
+ + +
+
+ + +
+
+ + Forgot Password ? +
+ + +
+
+
+
+ +
+
+
+
+
+
+ +
-
-
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
-
-
 
- + + \ No newline at end of file diff --git a/DeepakPahuja002/js/game.js b/DeepakPahuja002/js/game.js new file mode 100644 index 0000000..f600396 --- /dev/null +++ b/DeepakPahuja002/js/game.js @@ -0,0 +1,131 @@ +$(document).ready(function() { +// alert("dbxjwehb") + var count = 0; + var xScore = 0; + var x = "X"; + var o = "O"; + var gameover = 0; + var scoreShow = document.getElementById("scoreShow"); + var Username = localStorage.getItem("Username"); + var Password = localStorage.getItem("Password"); + + + $.ajax({ + type: 'GET', + url: 'http://localhost:50779/api/Users', + success: function(data) { + for(i=0; i