├── .gitattributes ├── .gitignore ├── ProjectTrackingServices ├── App_Start │ ├── BundleConfig.cs │ ├── FilterConfig.cs │ ├── RouteConfig.cs │ └── WebApiConfig.cs ├── Areas │ └── HelpPage │ │ ├── ApiDescriptionExtensions.cs │ │ ├── App_Start │ │ └── HelpPageConfig.cs │ │ ├── Controllers │ │ └── HelpController.cs │ │ ├── HelpPage.css │ │ ├── HelpPageAreaRegistration.cs │ │ ├── HelpPageConfigurationExtensions.cs │ │ ├── Models │ │ └── HelpPageApiModel.cs │ │ ├── SampleGeneration │ │ ├── HelpPageSampleGenerator.cs │ │ ├── HelpPageSampleKey.cs │ │ ├── ImageSample.cs │ │ ├── InvalidSample.cs │ │ ├── ObjectGenerator.cs │ │ ├── SampleDirection.cs │ │ └── TextSample.cs │ │ ├── Views │ │ ├── Help │ │ │ ├── Api.cshtml │ │ │ ├── DisplayTemplates │ │ │ │ ├── ApiGroup.cshtml │ │ │ │ ├── HelpPageApiModel.cshtml │ │ │ │ ├── ImageSample.cshtml │ │ │ │ ├── InvalidSample.cshtml │ │ │ │ ├── Parameters.cshtml │ │ │ │ ├── Samples.cshtml │ │ │ │ └── TextSample.cshtml │ │ │ └── Index.cshtml │ │ ├── Shared │ │ │ └── _Layout.cshtml │ │ ├── Web.config │ │ └── _ViewStart.cshtml │ │ └── XmlDocumentationProvider.cs ├── Content │ ├── Site.css │ ├── bootstrap.css │ └── bootstrap.min.css ├── Controllers │ ├── HomeController.cs │ ├── PTEmployeesController.cs │ ├── PTManagerCommentsController.cs │ ├── PTProjectTasksController.cs │ ├── PTProjectsController.cs │ ├── PTUserStoriesController.cs │ └── ValuesController.cs ├── Employee.cs ├── Global.asax ├── Global.asax.cs ├── ManagerComment.cs ├── Models │ ├── EmployeesRepository.cs │ ├── ManagerCommentsRepository.cs │ ├── ProjectTasksRepository.cs │ ├── ProjectsRepository.cs │ └── UserStoriesRepository.cs ├── Project.cs ├── ProjectTask.cs ├── ProjectTrackingDB.Context.cs ├── ProjectTrackingDB.Context.tt ├── ProjectTrackingDB.Designer.cs ├── ProjectTrackingDB.cs ├── ProjectTrackingDB.edmx ├── ProjectTrackingDB.edmx.diagram ├── ProjectTrackingDB.tt ├── ProjectTrackingServices.csproj ├── ProjectTrackingServices.csproj.user ├── Project_Readme.html ├── Properties │ └── AssemblyInfo.cs ├── Scripts │ ├── _references.js │ ├── bootstrap.js │ ├── bootstrap.min.js │ ├── jquery-1.10.2.intellisense.js │ ├── jquery-1.10.2.js │ ├── jquery-1.10.2.min.js │ ├── jquery-1.10.2.min.map │ ├── modernizr-2.6.2.js │ ├── respond.js │ └── respond.min.js ├── UserStory.cs ├── Views │ ├── Home │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── Web.config │ └── _ViewStart.cshtml ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── favicon.ico ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff ├── obj │ └── Debug │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── ProjectTrackingServices.csproj.FileListAbsolute.txt │ │ ├── ProjectTrackingServices.csprojResolveAssemblyReference.cache │ │ ├── ProjectTrackingServices.dll │ │ ├── ProjectTrackingServices.pdb │ │ ├── TempPE │ │ ├── ProjectTrackingDB.Designer.cs.dll │ │ └── ProjectTrackingDB.cs.dll │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ └── edmxResourcesToEmbed │ │ ├── ProjectTrackingDB.csdl │ │ ├── ProjectTrackingDB.msl │ │ └── ProjectTrackingDB.ssdl └── packages.config ├── ProjectTrackingWebsite.sln ├── ProjectTrackingWebsite.v12.suo └── ProjectTrackingWebsite ├── App_Start └── WebApiConfig.cs ├── CSS ├── Site.css └── amelia.bootstrap.min.css ├── Controllers ├── EmployeesController.js ├── HomeController.js ├── ManagerCommentsController.js ├── ProjectTasksController.js ├── ProjectsController.js └── UserStoriesController.js ├── Employees ├── EmployeeDetails.html ├── EmployeeInsert.html └── EmployeeModify.html ├── Global.asax ├── Global.asax.cs ├── Home.html ├── Images ├── Twitter_bird_icon.png ├── facebook-icon.png └── linkedin.png ├── Index.html ├── Layout.html ├── ProjectManagement ├── ManagerCommentDetails.html ├── ManagerCommentInsert.html ├── ManagerCommentModify.html ├── ProjectDetails.html ├── ProjectInsert.html └── ProjectModify.html ├── ProjectTrackingWebsite.csproj ├── ProjectTrackingWebsite.csproj.user ├── Properties └── AssemblyInfo.cs ├── Scripts ├── angular-animate.js ├── angular-animate.min.js ├── angular-animate.min.js.map ├── angular-cookies.js ├── angular-cookies.min.js ├── angular-cookies.min.js.map ├── angular-csp.css ├── angular-loader.js ├── angular-loader.min.js ├── angular-loader.min.js.map ├── angular-mocks.js ├── angular-resource.js ├── angular-resource.min.js ├── angular-resource.min.js.map ├── angular-route.js ├── angular-route.min.js ├── angular-route.min.js.map ├── angular-sanitize.js ├── angular-sanitize.min.js ├── angular-sanitize.min.js.map ├── angular-scenario.js ├── angular-touch.js ├── angular-touch.min.js ├── angular-touch.min.js.map ├── angular-ui │ ├── ui-bootstrap-tpls.js │ ├── ui-bootstrap-tpls.min.js │ ├── ui-bootstrap.js │ └── ui-bootstrap.min.js ├── angular.js ├── angular.min.js ├── angular.min.js.map ├── app.js ├── bootstrap-dropdown.js ├── bootstrap.min.js ├── errors.json ├── i18n │ ├── angular-locale_af-na.js │ ├── angular-locale_af-za.js │ ├── angular-locale_af.js │ ├── angular-locale_am-et.js │ ├── angular-locale_am.js │ ├── angular-locale_ar-001.js │ ├── angular-locale_ar-ae.js │ ├── angular-locale_ar-bh.js │ ├── angular-locale_ar-dz.js │ ├── angular-locale_ar-eg.js │ ├── angular-locale_ar-iq.js │ ├── angular-locale_ar-jo.js │ ├── angular-locale_ar-kw.js │ ├── angular-locale_ar-lb.js │ ├── angular-locale_ar-ly.js │ ├── angular-locale_ar-ma.js │ ├── angular-locale_ar-om.js │ ├── angular-locale_ar-qa.js │ ├── angular-locale_ar-sa.js │ ├── angular-locale_ar-sd.js │ ├── angular-locale_ar-sy.js │ ├── angular-locale_ar-tn.js │ ├── angular-locale_ar-ye.js │ ├── angular-locale_ar.js │ ├── angular-locale_bg-bg.js │ ├── angular-locale_bg.js │ ├── angular-locale_bn-bd.js │ ├── angular-locale_bn-in.js │ ├── angular-locale_bn.js │ ├── angular-locale_ca-ad.js │ ├── angular-locale_ca-es.js │ ├── angular-locale_ca.js │ ├── angular-locale_cs-cz.js │ ├── angular-locale_cs.js │ ├── angular-locale_da-dk.js │ ├── angular-locale_da.js │ ├── angular-locale_de-at.js │ ├── angular-locale_de-be.js │ ├── angular-locale_de-ch.js │ ├── angular-locale_de-de.js │ ├── angular-locale_de-li.js │ ├── angular-locale_de-lu.js │ ├── angular-locale_de.js │ ├── angular-locale_el-cy.js │ ├── angular-locale_el-gr.js │ ├── angular-locale_el.js │ ├── angular-locale_en-as.js │ ├── angular-locale_en-au.js │ ├── angular-locale_en-bb.js │ ├── angular-locale_en-be.js │ ├── angular-locale_en-bm.js │ ├── angular-locale_en-bw.js │ ├── angular-locale_en-bz.js │ ├── angular-locale_en-ca.js │ ├── angular-locale_en-dsrt-us.js │ ├── angular-locale_en-dsrt.js │ ├── angular-locale_en-fm.js │ ├── angular-locale_en-gb.js │ ├── angular-locale_en-gu.js │ ├── angular-locale_en-gy.js │ ├── angular-locale_en-hk.js │ ├── angular-locale_en-ie.js │ ├── angular-locale_en-in.js │ ├── angular-locale_en-iso.js │ ├── angular-locale_en-jm.js │ ├── angular-locale_en-mh.js │ ├── angular-locale_en-mp.js │ ├── angular-locale_en-mt.js │ ├── angular-locale_en-mu.js │ ├── angular-locale_en-na.js │ ├── angular-locale_en-nz.js │ ├── angular-locale_en-ph.js │ ├── angular-locale_en-pk.js │ ├── angular-locale_en-pr.js │ ├── angular-locale_en-pw.js │ ├── angular-locale_en-sg.js │ ├── angular-locale_en-tc.js │ ├── angular-locale_en-tt.js │ ├── angular-locale_en-um.js │ ├── angular-locale_en-us.js │ ├── angular-locale_en-vg.js │ ├── angular-locale_en-vi.js │ ├── angular-locale_en-za.js │ ├── angular-locale_en-zw.js │ ├── angular-locale_en.js │ ├── angular-locale_es-419.js │ ├── angular-locale_es-ar.js │ ├── angular-locale_es-bo.js │ ├── angular-locale_es-cl.js │ ├── angular-locale_es-co.js │ ├── angular-locale_es-cr.js │ ├── angular-locale_es-do.js │ ├── angular-locale_es-ea.js │ ├── angular-locale_es-ec.js │ ├── angular-locale_es-es.js │ ├── angular-locale_es-gq.js │ ├── angular-locale_es-gt.js │ ├── angular-locale_es-hn.js │ ├── angular-locale_es-ic.js │ ├── angular-locale_es-mx.js │ ├── angular-locale_es-ni.js │ ├── angular-locale_es-pa.js │ ├── angular-locale_es-pe.js │ ├── angular-locale_es-pr.js │ ├── angular-locale_es-py.js │ ├── angular-locale_es-sv.js │ ├── angular-locale_es-us.js │ ├── angular-locale_es-uy.js │ ├── angular-locale_es-ve.js │ ├── angular-locale_es.js │ ├── angular-locale_et-ee.js │ ├── angular-locale_et.js │ ├── angular-locale_eu-es.js │ ├── angular-locale_eu.js │ ├── angular-locale_fa-af.js │ ├── angular-locale_fa-ir.js │ ├── angular-locale_fa.js │ ├── angular-locale_fi-fi.js │ ├── angular-locale_fi.js │ ├── angular-locale_fil-ph.js │ ├── angular-locale_fil.js │ ├── angular-locale_fr-be.js │ ├── angular-locale_fr-bf.js │ ├── angular-locale_fr-bi.js │ ├── angular-locale_fr-bj.js │ ├── angular-locale_fr-bl.js │ ├── angular-locale_fr-ca.js │ ├── angular-locale_fr-cd.js │ ├── angular-locale_fr-cf.js │ ├── angular-locale_fr-cg.js │ ├── angular-locale_fr-ch.js │ ├── angular-locale_fr-ci.js │ ├── angular-locale_fr-cm.js │ ├── angular-locale_fr-dj.js │ ├── angular-locale_fr-fr.js │ ├── angular-locale_fr-ga.js │ ├── angular-locale_fr-gf.js │ ├── angular-locale_fr-gn.js │ ├── angular-locale_fr-gp.js │ ├── angular-locale_fr-gq.js │ ├── angular-locale_fr-km.js │ ├── angular-locale_fr-lu.js │ ├── angular-locale_fr-mc.js │ ├── angular-locale_fr-mf.js │ ├── angular-locale_fr-mg.js │ ├── angular-locale_fr-ml.js │ ├── angular-locale_fr-mq.js │ ├── angular-locale_fr-ne.js │ ├── angular-locale_fr-re.js │ ├── angular-locale_fr-rw.js │ ├── angular-locale_fr-sn.js │ ├── angular-locale_fr-td.js │ ├── angular-locale_fr-tg.js │ ├── angular-locale_fr-yt.js │ ├── angular-locale_fr.js │ ├── angular-locale_gl-es.js │ ├── angular-locale_gl.js │ ├── angular-locale_gsw-ch.js │ ├── angular-locale_gsw.js │ ├── angular-locale_gu-in.js │ ├── angular-locale_gu.js │ ├── angular-locale_he-il.js │ ├── angular-locale_he.js │ ├── angular-locale_hi-in.js │ ├── angular-locale_hi.js │ ├── angular-locale_hr-hr.js │ ├── angular-locale_hr.js │ ├── angular-locale_hu-hu.js │ ├── angular-locale_hu.js │ ├── angular-locale_id-id.js │ ├── angular-locale_id.js │ ├── angular-locale_in.js │ ├── angular-locale_is-is.js │ ├── angular-locale_is.js │ ├── angular-locale_it-ch.js │ ├── angular-locale_it-it.js │ ├── angular-locale_it-sm.js │ ├── angular-locale_it.js │ ├── angular-locale_iw.js │ ├── angular-locale_ja-jp.js │ ├── angular-locale_ja.js │ ├── angular-locale_kn-in.js │ ├── angular-locale_kn.js │ ├── angular-locale_ko-kr.js │ ├── angular-locale_ko.js │ ├── angular-locale_ln-cd.js │ ├── angular-locale_ln-cg.js │ ├── angular-locale_ln.js │ ├── angular-locale_lt-lt.js │ ├── angular-locale_lt.js │ ├── angular-locale_lv-lv.js │ ├── angular-locale_lv.js │ ├── angular-locale_ml-in.js │ ├── angular-locale_ml.js │ ├── angular-locale_mr-in.js │ ├── angular-locale_mr.js │ ├── angular-locale_ms-bn.js │ ├── angular-locale_ms-my.js │ ├── angular-locale_ms.js │ ├── angular-locale_mt-mt.js │ ├── angular-locale_mt.js │ ├── angular-locale_nl-aw.js │ ├── angular-locale_nl-be.js │ ├── angular-locale_nl-cw.js │ ├── angular-locale_nl-nl.js │ ├── angular-locale_nl-sx.js │ ├── angular-locale_nl.js │ ├── angular-locale_no.js │ ├── angular-locale_or-in.js │ ├── angular-locale_or.js │ ├── angular-locale_pl-pl.js │ ├── angular-locale_pl.js │ ├── angular-locale_pt-ao.js │ ├── angular-locale_pt-br.js │ ├── angular-locale_pt-gw.js │ ├── angular-locale_pt-mz.js │ ├── angular-locale_pt-pt.js │ ├── angular-locale_pt-st.js │ ├── angular-locale_pt.js │ ├── angular-locale_ro-md.js │ ├── angular-locale_ro-ro.js │ ├── angular-locale_ro.js │ ├── angular-locale_ru-md.js │ ├── angular-locale_ru-ru.js │ ├── angular-locale_ru-ua.js │ ├── angular-locale_ru.js │ ├── angular-locale_sk-sk.js │ ├── angular-locale_sk.js │ ├── angular-locale_sl-si.js │ ├── angular-locale_sl.js │ ├── angular-locale_sq-al.js │ ├── angular-locale_sq.js │ ├── angular-locale_sr-cyrl-ba.js │ ├── angular-locale_sr-cyrl-me.js │ ├── angular-locale_sr-cyrl-rs.js │ ├── angular-locale_sr-cyrl.js │ ├── angular-locale_sr-latn-ba.js │ ├── angular-locale_sr-latn-me.js │ ├── angular-locale_sr-latn-rs.js │ ├── angular-locale_sr-latn.js │ ├── angular-locale_sr.js │ ├── angular-locale_sv-fi.js │ ├── angular-locale_sv-se.js │ ├── angular-locale_sv.js │ ├── angular-locale_sw-ke.js │ ├── angular-locale_sw-tz.js │ ├── angular-locale_sw.js │ ├── angular-locale_ta-in.js │ ├── angular-locale_ta-lk.js │ ├── angular-locale_ta.js │ ├── angular-locale_te-in.js │ ├── angular-locale_te.js │ ├── angular-locale_th-th.js │ ├── angular-locale_th.js │ ├── angular-locale_tl.js │ ├── angular-locale_tr-tr.js │ ├── angular-locale_tr.js │ ├── angular-locale_uk-ua.js │ ├── angular-locale_uk.js │ ├── angular-locale_ur-in.js │ ├── angular-locale_ur-pk.js │ ├── angular-locale_ur.js │ ├── angular-locale_vi-vn.js │ ├── angular-locale_vi.js │ ├── angular-locale_zh-cn.js │ ├── angular-locale_zh-hans-cn.js │ ├── angular-locale_zh-hans-hk.js │ ├── angular-locale_zh-hans-mo.js │ ├── angular-locale_zh-hans-sg.js │ ├── angular-locale_zh-hans.js │ ├── angular-locale_zh-hant-hk.js │ ├── angular-locale_zh-hant-mo.js │ ├── angular-locale_zh-hant-tw.js │ ├── angular-locale_zh-hant.js │ ├── angular-locale_zh-hk.js │ ├── angular-locale_zh-tw.js │ ├── angular-locale_zh.js │ ├── angular-locale_zu-za.js │ └── angular-locale_zu.js ├── jquery-2.1.0.min.js └── version.json ├── Services ├── EmployeesService.js ├── ManagerCommentsService.js ├── ProjectTasksService.js ├── ProjectsService.js └── UserStoriesService.js ├── Tasks ├── ProjectTaskDetails.html ├── ProjectTaskInsert.html └── ProjectTaskModify.html ├── UserStories ├── UserStoryDetails.html ├── UserStoryInsert.html └── UserStoryUpdate.html └── Web.Debug.config /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /ProjectTrackingServices/App_Start/BundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Optimization; 3 | 4 | namespace ProjectTrackingServices 5 | { 6 | public class BundleConfig 7 | { 8 | // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 9 | public static void RegisterBundles(BundleCollection bundles) 10 | { 11 | bundles.Add(new ScriptBundle("~/bundles/jquery").Include( 12 | "~/Scripts/jquery-{version}.js")); 13 | 14 | // Use the development version of Modernizr to develop with and learn from. Then, when you're 15 | // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. 16 | bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( 17 | "~/Scripts/modernizr-*")); 18 | 19 | bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( 20 | "~/Scripts/bootstrap.js", 21 | "~/Scripts/respond.js")); 22 | 23 | bundles.Add(new StyleBundle("~/Content/css").Include( 24 | "~/Content/bootstrap.css", 25 | "~/Content/site.css")); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ProjectTrackingServices/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace ProjectTrackingServices 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ProjectTrackingServices/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using System.Web.Routing; 7 | 8 | namespace ProjectTrackingServices 9 | { 10 | public class RouteConfig 11 | { 12 | public static void RegisterRoutes(RouteCollection routes) 13 | { 14 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 15 | 16 | routes.MapRoute( 17 | name: "Default", 18 | url: "{controller}/{action}/{id}", 19 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 20 | ); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ProjectTrackingServices/App_Start/WebApiConfig.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json.Serialization; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Web.Http; 6 | 7 | 8 | namespace ProjectTrackingServices 9 | { 10 | public static class WebApiConfig 11 | { 12 | public static void Register(HttpConfiguration config) 13 | { 14 | // Web API configuration and services 15 | config.EnableCors(); 16 | // Web API routes 17 | config.MapHttpAttributeRoutes(); 18 | 19 | //config.Routes.MapHttpRoute( 20 | // name: "DefaultApi", 21 | // routeTemplate: "api/{controller}/{id}", 22 | // defaults: new { id = RouteParameter.Optional } 23 | //); 24 | var json = config.Formatters.JsonFormatter; 25 | json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; 26 | json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 27 | config.Formatters.Remove(config.Formatters.XmlFormatter); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/ApiDescriptionExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using System.Web; 4 | using System.Web.Http.Description; 5 | 6 | namespace ProjectTrackingServices.Areas.HelpPage 7 | { 8 | public static class ApiDescriptionExtensions 9 | { 10 | /// 11 | /// Generates an URI-friendly ID for the . E.g. "Get-Values-id_name" instead of "GetValues/{id}?name={name}" 12 | /// 13 | /// The . 14 | /// The ID as a string. 15 | public static string GetFriendlyId(this ApiDescription description) 16 | { 17 | string path = description.RelativePath; 18 | string[] urlParts = path.Split('?'); 19 | string localPath = urlParts[0]; 20 | string queryKeyString = null; 21 | if (urlParts.Length > 1) 22 | { 23 | string query = urlParts[1]; 24 | string[] queryKeys = HttpUtility.ParseQueryString(query).AllKeys; 25 | queryKeyString = String.Join("_", queryKeys); 26 | } 27 | 28 | StringBuilder friendlyPath = new StringBuilder(); 29 | friendlyPath.AppendFormat("{0}-{1}", 30 | description.HttpMethod.Method, 31 | localPath.Replace("/", "-").Replace("{", String.Empty).Replace("}", String.Empty)); 32 | if (queryKeyString != null) 33 | { 34 | friendlyPath.AppendFormat("_{0}", queryKeyString); 35 | } 36 | return friendlyPath.ToString(); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Controllers/HelpController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Http; 3 | using System.Web.Mvc; 4 | using ProjectTrackingServices.Areas.HelpPage.Models; 5 | 6 | namespace ProjectTrackingServices.Areas.HelpPage.Controllers 7 | { 8 | /// 9 | /// The controller that will handle requests for the help page. 10 | /// 11 | public class HelpController : Controller 12 | { 13 | public HelpController() 14 | : this(GlobalConfiguration.Configuration) 15 | { 16 | } 17 | 18 | public HelpController(HttpConfiguration config) 19 | { 20 | Configuration = config; 21 | } 22 | 23 | public HttpConfiguration Configuration { get; private set; } 24 | 25 | public ActionResult Index() 26 | { 27 | ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider(); 28 | return View(Configuration.Services.GetApiExplorer().ApiDescriptions); 29 | } 30 | 31 | public ActionResult Api(string apiId) 32 | { 33 | if (!String.IsNullOrEmpty(apiId)) 34 | { 35 | HelpPageApiModel apiModel = Configuration.GetHelpPageApiModel(apiId); 36 | if (apiModel != null) 37 | { 38 | return View(apiModel); 39 | } 40 | } 41 | 42 | return View("Error"); 43 | } 44 | } 45 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/HelpPage.css: -------------------------------------------------------------------------------- 1 | pre.wrapped { 2 | white-space: -moz-pre-wrap; 3 | white-space: -pre-wrap; 4 | white-space: -o-pre-wrap; 5 | white-space: pre-wrap; 6 | } 7 | 8 | .warning-message-container { 9 | margin-top: 20px; 10 | padding: 0 10px; 11 | color: #525252; 12 | background: #EFDCA9; 13 | border: 1px solid #CCCCCC; 14 | } 15 | 16 | .help-page-table { 17 | width: 100%; 18 | border-collapse: collapse; 19 | text-align: left; 20 | margin: 0px 0px 20px 0px; 21 | border-top: 2px solid #D4D4D4; 22 | } 23 | 24 | .help-page-table th { 25 | text-align: left; 26 | font-weight: bold; 27 | border-bottom: 2px solid #D4D4D4; 28 | padding: 8px 6px 8px 6px; 29 | } 30 | 31 | .help-page-table td { 32 | border-bottom: 2px solid #D4D4D4; 33 | padding: 15px 8px 15px 8px; 34 | vertical-align: top; 35 | } 36 | 37 | .help-page-table pre, .help-page-table p { 38 | margin: 0px; 39 | padding: 0px; 40 | font-family: inherit; 41 | font-size: 100%; 42 | } 43 | 44 | .help-page-table tbody tr:hover td { 45 | background-color: #F3F3F3; 46 | } 47 | 48 | a:hover { 49 | background-color: transparent; 50 | } 51 | 52 | .sample-header { 53 | border: 2px solid #D4D4D4; 54 | background: #76B8DB; 55 | color: #FFFFFF; 56 | padding: 8px 15px; 57 | border-bottom: none; 58 | display: inline-block; 59 | margin: 10px 0px 0px 0px; 60 | } 61 | 62 | .sample-content { 63 | display: block; 64 | border-width: 0; 65 | padding: 15px 20px; 66 | background: #FFFFFF; 67 | border: 2px solid #D4D4D4; 68 | margin: 0px 0px 10px 0px; 69 | } 70 | 71 | .api-name { 72 | width: 40%; 73 | } 74 | 75 | .api-documentation { 76 | width: 60%; 77 | } 78 | 79 | .parameter-name { 80 | width: 20%; 81 | } 82 | 83 | .parameter-documentation { 84 | width: 50%; 85 | } 86 | 87 | .parameter-source { 88 | width: 30%; 89 | } 90 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/HelpPageAreaRegistration.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Http; 2 | using System.Web.Mvc; 3 | 4 | namespace ProjectTrackingServices.Areas.HelpPage 5 | { 6 | public class HelpPageAreaRegistration : AreaRegistration 7 | { 8 | public override string AreaName 9 | { 10 | get 11 | { 12 | return "HelpPage"; 13 | } 14 | } 15 | 16 | public override void RegisterArea(AreaRegistrationContext context) 17 | { 18 | context.MapRoute( 19 | "HelpPage_Default", 20 | "Help/{action}/{apiId}", 21 | new { controller = "Help", action = "Index", apiId = UrlParameter.Optional }); 22 | 23 | HelpPageConfig.Register(GlobalConfiguration.Configuration); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Models/HelpPageApiModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | using System.Net.Http.Headers; 4 | using System.Web.Http.Description; 5 | 6 | namespace ProjectTrackingServices.Areas.HelpPage.Models 7 | { 8 | /// 9 | /// The model that represents an API displayed on the help page. 10 | /// 11 | public class HelpPageApiModel 12 | { 13 | /// 14 | /// Initializes a new instance of the class. 15 | /// 16 | public HelpPageApiModel() 17 | { 18 | SampleRequests = new Dictionary(); 19 | SampleResponses = new Dictionary(); 20 | ErrorMessages = new Collection(); 21 | } 22 | 23 | /// 24 | /// Gets or sets the that describes the API. 25 | /// 26 | public ApiDescription ApiDescription { get; set; } 27 | 28 | /// 29 | /// Gets the sample requests associated with the API. 30 | /// 31 | public IDictionary SampleRequests { get; private set; } 32 | 33 | /// 34 | /// Gets the sample responses associated with the API. 35 | /// 36 | public IDictionary SampleResponses { get; private set; } 37 | 38 | /// 39 | /// Gets the error messages associated with this model. 40 | /// 41 | public Collection ErrorMessages { get; private set; } 42 | } 43 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/SampleGeneration/ImageSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ProjectTrackingServices.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents an image sample on the help page. There's a display template named ImageSample associated with this class. 7 | /// 8 | public class ImageSample 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The URL of an image. 14 | public ImageSample(string src) 15 | { 16 | if (src == null) 17 | { 18 | throw new ArgumentNullException("src"); 19 | } 20 | Src = src; 21 | } 22 | 23 | public string Src { get; private set; } 24 | 25 | public override bool Equals(object obj) 26 | { 27 | ImageSample other = obj as ImageSample; 28 | return other != null && Src == other.Src; 29 | } 30 | 31 | public override int GetHashCode() 32 | { 33 | return Src.GetHashCode(); 34 | } 35 | 36 | public override string ToString() 37 | { 38 | return Src; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/SampleGeneration/InvalidSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ProjectTrackingServices.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents an invalid sample on the help page. There's a display template named InvalidSample associated with this class. 7 | /// 8 | public class InvalidSample 9 | { 10 | public InvalidSample(string errorMessage) 11 | { 12 | if (errorMessage == null) 13 | { 14 | throw new ArgumentNullException("errorMessage"); 15 | } 16 | ErrorMessage = errorMessage; 17 | } 18 | 19 | public string ErrorMessage { get; private set; } 20 | 21 | public override bool Equals(object obj) 22 | { 23 | InvalidSample other = obj as InvalidSample; 24 | return other != null && ErrorMessage == other.ErrorMessage; 25 | } 26 | 27 | public override int GetHashCode() 28 | { 29 | return ErrorMessage.GetHashCode(); 30 | } 31 | 32 | public override string ToString() 33 | { 34 | return ErrorMessage; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/SampleGeneration/SampleDirection.cs: -------------------------------------------------------------------------------- 1 | namespace ProjectTrackingServices.Areas.HelpPage 2 | { 3 | /// 4 | /// Indicates whether the sample is used for request or response 5 | /// 6 | public enum SampleDirection 7 | { 8 | Request = 0, 9 | Response 10 | } 11 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/SampleGeneration/TextSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ProjectTrackingServices.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents a preformatted text sample on the help page. There's a display template named TextSample associated with this class. 7 | /// 8 | public class TextSample 9 | { 10 | public TextSample(string text) 11 | { 12 | if (text == null) 13 | { 14 | throw new ArgumentNullException("text"); 15 | } 16 | Text = text; 17 | } 18 | 19 | public string Text { get; private set; } 20 | 21 | public override bool Equals(object obj) 22 | { 23 | TextSample other = obj as TextSample; 24 | return other != null && Text == other.Text; 25 | } 26 | 27 | public override int GetHashCode() 28 | { 29 | return Text.GetHashCode(); 30 | } 31 | 32 | public override string ToString() 33 | { 34 | return Text; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/Api.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using ProjectTrackingServices.Areas.HelpPage.Models 3 | @model HelpPageApiModel 4 | 5 | @{ 6 | var description = Model.ApiDescription; 7 | ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath; 8 | } 9 | 10 |
11 | 18 |
19 | @Html.DisplayFor(m => Model) 20 |
21 |
22 | 23 | @section Scripts { 24 | 25 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using System.Web.Http.Controllers 3 | @using System.Web.Http.Description 4 | @using ProjectTrackingServices.Areas.HelpPage 5 | @using ProjectTrackingServices.Areas.HelpPage.Models 6 | @model IGrouping 7 | 8 | @{ 9 | var controllerDocumentation = ViewBag.DocumentationProvider != null ? 10 | ViewBag.DocumentationProvider.GetDocumentation(Model.Key) : 11 | null; 12 | } 13 | 14 |

@Model.Key.ControllerName

15 | @if (!String.IsNullOrEmpty(controllerDocumentation)) 16 | { 17 |

@controllerDocumentation

18 | } 19 | 20 | 21 | 22 | 23 | 24 | @foreach (var api in Model) 25 | { 26 | 27 | 28 | 38 | 39 | } 40 | 41 |
APIDescription
@api.HttpMethod.Method @api.RelativePath 29 | @if (api.Documentation != null) 30 | { 31 |

@api.Documentation

32 | } 33 | else 34 | { 35 |

No documentation available.

36 | } 37 |
-------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using ProjectTrackingServices.Areas.HelpPage.Models 3 | @model HelpPageApiModel 4 | 5 | @{ 6 | var description = Model.ApiDescription; 7 | bool hasParameters = description.ParameterDescriptions.Count > 0; 8 | bool hasRequestSamples = Model.SampleRequests.Count > 0; 9 | bool hasResponseSamples = Model.SampleResponses.Count > 0; 10 | } 11 |

@description.HttpMethod.Method @description.RelativePath

12 |
13 | @if (description.Documentation != null) 14 | { 15 |

@description.Documentation

16 | } 17 | else 18 | { 19 |

No documentation available.

20 | } 21 | 22 | @if (hasParameters || hasRequestSamples) 23 | { 24 |

Request Information

25 | if (hasParameters) 26 | { 27 |

Parameters

28 | @Html.DisplayFor(apiModel => apiModel.ApiDescription.ParameterDescriptions, "Parameters") 29 | } 30 | if (hasRequestSamples) 31 | { 32 |

Request body formats

33 | @Html.DisplayFor(apiModel => apiModel.SampleRequests, "Samples") 34 | } 35 | } 36 | 37 | @if (hasResponseSamples) 38 | { 39 |

Response Information

40 | if (description.ResponseDescription.Documentation != null) 41 | { 42 |

@description.ResponseDescription.Documentation

43 | } 44 | else 45 | { 46 |

No documentation available.

47 | } 48 |

Response body formats

49 | @Html.DisplayFor(apiModel => apiModel.SampleResponses, "Samples") 50 | } 51 |
-------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml: -------------------------------------------------------------------------------- 1 | @using ProjectTrackingServices.Areas.HelpPage 2 | @model ImageSample 3 | 4 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml: -------------------------------------------------------------------------------- 1 | @using ProjectTrackingServices.Areas.HelpPage 2 | @model InvalidSample 3 | 4 | @if (HttpContext.Current.IsDebuggingEnabled) 5 | { 6 |
7 |

@Model.ErrorMessage

8 |
9 | } 10 | else 11 | { 12 |

Sample not available.

13 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Collections.ObjectModel 2 | @using System.Web.Http.Description 3 | @using System.Threading 4 | @model Collection 5 | 6 | 7 | 8 | 9 | 10 | 11 | @foreach (ApiParameterDescription parameter in Model) 12 | { 13 | string parameterDocumentation = parameter.Documentation != null ? 14 | parameter.Documentation : 15 | "No documentation available."; 16 | 17 | // Don't show CancellationToken because it's a special parameter 18 | if (parameter.ParameterDescriptor == null || 19 | (parameter.ParameterDescriptor != null && 20 | !typeof(CancellationToken).IsAssignableFrom(parameter.ParameterDescriptor.ParameterType))) 21 | { 22 | 23 | 24 | 25 | 40 | 41 | } 42 | } 43 | 44 |
NameDescriptionAdditional information
@parameter.Name
@parameterDocumentation
26 | @switch (parameter.Source) 27 | { 28 | case ApiParameterSource.FromBody: 29 |

Define this parameter in the request body.

30 | break; 31 | case ApiParameterSource.FromUri: 32 |

Define this parameter in the request URI.

33 | break; 34 | case ApiParameterSource.Unknown: 35 | default: 36 |

None.

37 | break; 38 | } 39 |
-------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Net.Http.Headers 2 | @model Dictionary 3 | 4 | @{ 5 | // Group the samples into a single tab if they are the same. 6 | Dictionary samples = Model.GroupBy(pair => pair.Value).ToDictionary( 7 | pair => String.Join(", ", pair.Select(m => m.Key.ToString()).ToArray()), 8 | pair => pair.Key); 9 | var mediaTypes = samples.Keys; 10 | } 11 |
12 | @foreach (var mediaType in mediaTypes) 13 | { 14 |

@mediaType

15 |
16 | Sample: 17 | @{ 18 | var sample = samples[mediaType]; 19 | if (sample == null) 20 | { 21 |

Sample not available.

22 | } 23 | else 24 | { 25 | @Html.DisplayFor(s => sample); 26 | } 27 | } 28 |
29 | } 30 |
-------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml: -------------------------------------------------------------------------------- 1 | @using ProjectTrackingServices.Areas.HelpPage 2 | @model TextSample 3 | 4 |
5 | @Model.Text
6 | 
-------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Help/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using System.Web.Http.Controllers 3 | @using System.Web.Http.Description 4 | @using System.Collections.ObjectModel 5 | @using ProjectTrackingServices.Areas.HelpPage.Models 6 | @model Collection 7 | 8 | @{ 9 | ViewBag.Title = "ASP.NET Web API Help Page"; 10 | 11 | // Group APIs by controller 12 | ILookup apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor); 13 | } 14 | 15 |
16 |
17 |
18 |

@ViewBag.Title

19 |
20 |
21 |
22 |
23 | 31 |
32 | @foreach (var group in apiGroups) 33 | { 34 | @Html.DisplayFor(m => group, "ApiGroup") 35 | } 36 |
37 |
38 | 39 | @section Scripts { 40 | 41 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewBag.Title 7 | @RenderSection("scripts", required: false) 8 | 9 | 10 | @RenderBody() 11 | 12 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Areas/HelpPage/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | // Change the Layout path below to blend the look and feel of the help page with your existing web pages 3 | Layout = "~/Views/Shared/_Layout.cshtml"; 4 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Content/Site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | /* Set padding to keep content from hitting the edges */ 7 | .body-content { 8 | padding-left: 15px; 9 | padding-right: 15px; 10 | } 11 | 12 | /* Set width on the form input elements since they're 100% wide by default */ 13 | input, 14 | select, 15 | textarea { 16 | max-width: 280px; 17 | } 18 | 19 | /* styles for validation helpers */ 20 | .field-validation-error { 21 | color: #b94a48; 22 | } 23 | 24 | .field-validation-valid { 25 | display: none; 26 | } 27 | 28 | input.input-validation-error { 29 | border: 1px solid #b94a48; 30 | } 31 | 32 | input[type="checkbox"].input-validation-error { 33 | border: 0 none; 34 | } 35 | 36 | .validation-summary-errors { 37 | color: #b94a48; 38 | } 39 | 40 | .validation-summary-valid { 41 | display: none; 42 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | namespace ProjectTrackingServices.Controllers 8 | { 9 | public class HomeController : Controller 10 | { 11 | public ActionResult Index() 12 | { 13 | ViewBag.Title = "Home Page"; 14 | 15 | return View(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/PTManagerCommentsController.cs: -------------------------------------------------------------------------------- 1 | using ProjectTrackingServices.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Net.Http; 7 | using System.Web.Http; 8 | using System.Web.Http.Cors; 9 | 10 | namespace ProjectTrackingServices.Controllers 11 | { 12 | [EnableCors(origins: "http://localhost:55058", headers: "*", methods: "*")] 13 | public class PTManagerCommentsController : ApiController 14 | { 15 | // GET api/ptmanagercomments 16 | [Route("api/ptmanagercomments")] 17 | public IEnumerable Get() 18 | { 19 | return ManagerCommentsRepository.GetAllManagerComments(); 20 | } 21 | 22 | // GET api/ptmanagercomments/5 23 | [Route("api/ptmanagercomments/{id?}")] 24 | public ManagerComment Get(int id) 25 | { 26 | return ManagerCommentsRepository.GetManagerComment(id); 27 | } 28 | 29 | [Route("api/ptmanagercomments")] 30 | public IEnumerable Post(ManagerComment comment) 31 | { 32 | return ManagerCommentsRepository.InsertManagerComments(comment); 33 | } 34 | 35 | [Route("api/ptmanagercomments")] 36 | public IEnumerable Put(ManagerComment comment) 37 | { 38 | return ManagerCommentsRepository.UpdateManagerComments(comment); 39 | } 40 | 41 | [Route("api/ptmanagercomments")] 42 | public IEnumerable Delete(ManagerComment comment) 43 | { 44 | return ManagerCommentsRepository.DeleteManagerComments(comment); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/PTProjectTasksController.cs: -------------------------------------------------------------------------------- 1 | using ProjectTrackingServices.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Net.Http; 7 | using System.Web.Http; 8 | using System.Web.Http.Cors; 9 | 10 | namespace ProjectTrackingServices.Controllers 11 | { 12 | [EnableCors(origins: "http://localhost:55058", headers: "*", methods: "*")] 13 | public class PTProjectTasksController : ApiController 14 | { 15 | // GET api/ptprojecttasks 16 | [Route("api/ptprojecttasks")] 17 | public IEnumerable Get() 18 | { 19 | return ProjectTasksRepository.GetAllProjectTasks(); 20 | } 21 | 22 | // GET api/ptprojecttasks/5 23 | [Route("api/ptprojecttasks/{id?}")] 24 | public ProjectTask Get(int id) 25 | { 26 | return ProjectTasksRepository.GetProjectTask(id); 27 | } 28 | 29 | [Route("api/ptprojecttasks")] 30 | public IEnumerable Post(ProjectTask pt) 31 | { 32 | return ProjectTasksRepository.InsertProjectTask(pt); 33 | } 34 | 35 | [Route("api/ptprojecttasks")] 36 | public IEnumerable Put(ProjectTask pt) 37 | { 38 | return ProjectTasksRepository.UpdateProjectTask(pt); 39 | } 40 | 41 | [Route("api/ptprojecttasks")] 42 | public IEnumerable Delete(ProjectTask pt) 43 | { 44 | return ProjectTasksRepository.DeleteProjectTask(pt); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/PTProjectsController.cs: -------------------------------------------------------------------------------- 1 | using ProjectTrackingServices.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Net.Http; 7 | using System.Web.Http; 8 | using System.Web.Http.Cors; 9 | 10 | namespace ProjectTrackingServices.Controllers 11 | { 12 | [EnableCors(origins: "http://localhost:55058", headers: "*", methods: "*")] 13 | public class PTProjectsController : ApiController 14 | { 15 | ProjectsRepository repository; 16 | 17 | public PTProjectsController() 18 | { 19 | repository = new ProjectsRepository(); 20 | } 21 | 22 | // GET api/projects 23 | [Route("api/ptprojects")] 24 | public IEnumerable Get() 25 | { 26 | return repository.GetAllProjects(); 27 | } 28 | 29 | // GET api/projects/5 30 | [Route("api/ptprojects/{id?}")] 31 | public Project Get(int id) 32 | { 33 | return repository.GetProject(id); 34 | } 35 | 36 | [Route("api/ptprojects/{name:alpha}")] 37 | public IEnumerable Get(string name) 38 | { 39 | return repository.GetProjectByName(name); 40 | } 41 | 42 | [Route("api/ptprojects")] 43 | public IEnumerable Post(Project p) 44 | { 45 | return repository.InsertProject(p); 46 | } 47 | 48 | [Route("api/ptprojects/{id}")] 49 | public IEnumerable Put([FromBody]Project p) 50 | { 51 | return repository.UpdateProject(p); 52 | } 53 | 54 | [Route("api/ptprojects/{id}")] 55 | [HttpDelete] 56 | public IEnumerable Delete(int id) 57 | { 58 | return repository.DeleteProject(id); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/PTUserStoriesController.cs: -------------------------------------------------------------------------------- 1 | using ProjectTrackingServices.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Net.Http; 7 | using System.Web.Http; 8 | using System.Web.Http.Cors; 9 | 10 | namespace ProjectTrackingServices.Controllers 11 | { 12 | [EnableCors(origins: "http://localhost:55058", headers: "*", methods: "*")] 13 | public class PTUserStoriesController : ApiController 14 | { 15 | UserStoriesRepository repository; 16 | 17 | public PTUserStoriesController() 18 | { 19 | repository = new UserStoriesRepository(); 20 | } 21 | 22 | // GET api/ptuserstories 23 | [Route("api/ptuserstories")] 24 | public IEnumerable Get() 25 | { 26 | return repository.GetAllUserStories(); 27 | } 28 | 29 | // GET api/ptuserstories/5 30 | [Route("api/ptuserstories/{id?}")] 31 | public UserStory Get(int id) 32 | { 33 | return repository.GetUserStory(id); 34 | } 35 | 36 | [Route("api/ptuserstories")] 37 | public IEnumerable Post([FromBody]UserStory us) 38 | { 39 | return repository.InsertUserStory(us); 40 | } 41 | 42 | [Route("api/ptuserstories")] 43 | public IEnumerable Put(UserStory us) 44 | { 45 | return repository.UpdateUserStory(us); 46 | } 47 | 48 | [Route("api/ptuserstories")] 49 | public IEnumerable Delete(UserStory us) 50 | { 51 | return repository.DeleteUserStory(us); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Controllers/ValuesController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net; 5 | using System.Net.Http; 6 | using System.Web.Http; 7 | 8 | namespace ProjectTrackingServices.Controllers 9 | { 10 | public class ValuesController : ApiController 11 | { 12 | // GET api/values 13 | public IEnumerable Get() 14 | { 15 | return new string[] { "value1", "value2" }; 16 | } 17 | 18 | // GET api/values/5 19 | public string Get(int id) 20 | { 21 | return "value"; 22 | } 23 | 24 | // POST api/values 25 | public void Post([FromBody]string value) 26 | { 27 | } 28 | 29 | // PUT api/values/5 30 | public void Put(int id, [FromBody]string value) 31 | { 32 | } 33 | 34 | // DELETE api/values/5 35 | public void Delete(int id) 36 | { 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Employee.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | 15 | public partial class Employee 16 | { 17 | public Employee() 18 | { 19 | this.ProjectTasks = new HashSet(); 20 | } 21 | 22 | public int EmployeeID { get; set; } 23 | public string EmployeeName { get; set; } 24 | public string Designation { get; set; } 25 | public Nullable ManagerID { get; set; } 26 | public string ContactNo { get; set; } 27 | public string EMailID { get; set; } 28 | public string SkillSets { get; set; } 29 | 30 | public virtual ICollection ProjectTasks { get; set; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ProjectTrackingServices.WebApiApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Http; 6 | using System.Web.Mvc; 7 | using System.Web.Optimization; 8 | using System.Web.Routing; 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | public class WebApiApplication : System.Web.HttpApplication 13 | { 14 | protected void Application_Start() 15 | { 16 | AreaRegistration.RegisterAllAreas(); 17 | GlobalConfiguration.Configure(WebApiConfig.Register); 18 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 19 | RouteConfig.RegisterRoutes(RouteTable.Routes); 20 | BundleConfig.RegisterBundles(BundleTable.Bundles); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ManagerComment.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | 15 | public partial class ManagerComment 16 | { 17 | public int ManagerCommentID { get; set; } 18 | public string Comments { get; set; } 19 | public Nullable ProjectTaskID { get; set; } 20 | 21 | public virtual ProjectTask ProjectTask { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Models/ManagerCommentsRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace ProjectTrackingServices.Models 7 | { 8 | public class ManagerCommentsRepository 9 | { 10 | private static ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); 11 | public static List GetAllManagerComments() 12 | { 13 | var query = from comments in dataContext.ManagerComments 14 | select comments; 15 | return query.ToList(); 16 | } 17 | public static ManagerComment GetManagerComment(int ManagerCommentID) 18 | { 19 | var query = from comments in dataContext.ManagerComments 20 | where comments.ManagerCommentID==ManagerCommentID 21 | select comments; 22 | return query.SingleOrDefault(); 23 | } 24 | public static List InsertManagerComments(ManagerComment comment) 25 | { 26 | dataContext.ManagerComments.Add(comment); 27 | dataContext.SaveChanges(); 28 | return GetAllManagerComments(); 29 | } 30 | public static List UpdateManagerComments(ManagerComment comment) 31 | { 32 | var managerComment = (from comments in dataContext.ManagerComments 33 | where comments.ManagerCommentID == comment.ManagerCommentID 34 | select comments).SingleOrDefault(); 35 | managerComment.Comments = comment.Comments; 36 | dataContext.SaveChanges(); 37 | return GetAllManagerComments(); 38 | } 39 | public static List DeleteManagerComments(ManagerComment comment) 40 | { 41 | dataContext.ManagerComments.Remove(comment); 42 | dataContext.SaveChanges(); 43 | return GetAllManagerComments(); 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Models/ProjectTasksRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace ProjectTrackingServices.Models 7 | { 8 | public class ProjectTasksRepository 9 | { 10 | private static ProjectTrackingDBEntities dataContext = new ProjectTrackingDBEntities(); 11 | public static List GetAllProjectTasks() 12 | { 13 | var query = from projTasks in dataContext.ProjectTasks 14 | select projTasks; 15 | return query.ToList(); 16 | } 17 | public static ProjectTask GetProjectTask(int ProjectTaskID) 18 | { 19 | var query = (from projTasks in dataContext.ProjectTasks 20 | where projTasks.ProjectTaskID==ProjectTaskID 21 | select projTasks).SingleOrDefault(); 22 | return query; 23 | } 24 | public static List InsertProjectTask(ProjectTask PT) 25 | { 26 | dataContext.ProjectTasks.Add(PT); 27 | dataContext.SaveChanges(); 28 | return GetAllProjectTasks(); 29 | } 30 | public static List UpdateProjectTask(ProjectTask PT) 31 | { 32 | var projectTask = (from projTasks in dataContext.ProjectTasks 33 | where projTasks.ProjectTaskID == PT.ProjectTaskID 34 | select projTasks).SingleOrDefault(); 35 | projectTask.AssignedTo = PT.AssignedTo; 36 | projectTask.TaskStartDate = PT.TaskStartDate; 37 | projectTask.TaskEndDate = PT.TaskEndDate; 38 | projectTask.TaskCompletion = PT.TaskCompletion; 39 | projectTask.UserStoryID = PT.UserStoryID; 40 | dataContext.SaveChanges(); 41 | return GetAllProjectTasks(); 42 | } 43 | public static List DeleteProjectTask(ProjectTask PT) 44 | { 45 | var projectTask = (from projTasks in dataContext.ProjectTasks 46 | where projTasks.ProjectTaskID == PT.ProjectTaskID 47 | select projTasks).SingleOrDefault(); 48 | dataContext.ProjectTasks.Remove(projectTask); 49 | dataContext.SaveChanges(); 50 | return GetAllProjectTasks(); 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Models/UserStoriesRepository.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace ProjectTrackingServices.Models 7 | { 8 | public class UserStoriesRepository : IDisposable 9 | { 10 | private ProjectTrackingDBEntities dataContext; 11 | 12 | public UserStoriesRepository() 13 | { 14 | dataContext = new ProjectTrackingDBEntities(); 15 | } 16 | 17 | public List GetAllUserStories() 18 | { 19 | var query = from us in dataContext.UserStories 20 | select us; 21 | return query.ToList(); 22 | } 23 | public UserStory GetUserStory(int UserStoryID) 24 | { 25 | var query = from us in dataContext.UserStories 26 | where us.UserStoryID==UserStoryID 27 | select us; 28 | return query.SingleOrDefault(); 29 | } 30 | public List InsertUserStory(UserStory us) 31 | { 32 | dataContext.UserStories.Add(us); 33 | dataContext.SaveChanges(); 34 | return GetAllUserStories(); 35 | } 36 | public List UpdateUserStory(UserStory oldUS) 37 | { 38 | var userStory = (from us in dataContext.UserStories 39 | where us.UserStoryID == oldUS.UserStoryID 40 | select us).SingleOrDefault(); 41 | userStory.Story = oldUS.Story; 42 | dataContext.SaveChanges(); 43 | return GetAllUserStories(); 44 | } 45 | public List DeleteUserStory(UserStory oldUS) 46 | { 47 | var userStory = (from us in dataContext.UserStories 48 | where us.UserStoryID == oldUS.UserStoryID 49 | select us).SingleOrDefault(); 50 | dataContext.UserStories.Remove(userStory); 51 | dataContext.SaveChanges(); 52 | return GetAllUserStories(); 53 | } 54 | 55 | 56 | 57 | public void Dispose() 58 | { 59 | dataContext.Dispose(); 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /ProjectTrackingServices/Project.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | 15 | public partial class Project 16 | { 17 | public Project() 18 | { 19 | this.UserStories = new HashSet(); 20 | } 21 | 22 | public int ProjectID { get; set; } 23 | public string ProjectName { get; set; } 24 | public Nullable StartDate { get; set; } 25 | public Nullable EndDate { get; set; } 26 | public string ClientName { get; set; } 27 | 28 | public virtual ICollection UserStories { get; set; } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTask.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | 15 | public partial class ProjectTask 16 | { 17 | public ProjectTask() 18 | { 19 | this.ManagerComments = new HashSet(); 20 | } 21 | 22 | public int ProjectTaskID { get; set; } 23 | public Nullable AssignedTo { get; set; } 24 | public Nullable TaskStartDate { get; set; } 25 | public Nullable TaskEndDate { get; set; } 26 | public Nullable TaskCompletion { get; set; } 27 | public Nullable UserStoryID { get; set; } 28 | 29 | public virtual Employee Employee { get; set; } 30 | public virtual ICollection ManagerComments { get; set; } 31 | public virtual UserStory UserStory { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTrackingDB.Context.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Data.Entity; 14 | using System.Data.Entity.Infrastructure; 15 | 16 | public partial class ProjectTrackingDBEntities : DbContext 17 | { 18 | public ProjectTrackingDBEntities() 19 | : base("name=ProjectTrackingDBEntities") 20 | { 21 | } 22 | 23 | protected override void OnModelCreating(DbModelBuilder modelBuilder) 24 | { 25 | throw new UnintentionalCodeFirstException(); 26 | } 27 | 28 | public virtual DbSet Employees { get; set; } 29 | public virtual DbSet ManagerComments { get; set; } 30 | public virtual DbSet Projects { get; set; } 31 | public virtual DbSet ProjectTasks { get; set; } 32 | public virtual DbSet UserStories { get; set; } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTrackingDB.Designer.cs: -------------------------------------------------------------------------------- 1 | // T4 code generation is enabled for model 'D:\Dropbox\Dropbox\Ravi\Articles for Review\To Be Reviewed\Angular Series\Code\ProjectTrackingWebsite\ProjectTrackingServices\ProjectTrackingDB.edmx'. 2 | // To enable legacy code generation, change the value of the 'Code Generation Strategy' designer 3 | // property to 'Legacy ObjectContext'. This property is available in the Properties Window when the model 4 | // is open in the designer. 5 | 6 | // If no context and entity classes have been generated, it may be because you created an empty model but 7 | // have not yet chosen which version of Entity Framework to use. To generate a context class and entity 8 | // classes for your model, open the model in the designer, right-click on the designer surface, and 9 | // select 'Update Model from Database...', 'Generate Database from Model...', or 'Add Code Generation 10 | // Item...'. -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTrackingDB.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTrackingDB.edmx.diagram: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ProjectTrackingServices/ProjectTrackingServices.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | False 6 | True 7 | 8 | False 9 | ShowAllFiles 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | CurrentPage 18 | True 19 | False 20 | False 21 | False 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | True 31 | True 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ProjectTrackingServices")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ProjectTrackingServices")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("f205c2b1-1aa4-4565-af94-f4c5e99bb87d")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/Scripts/_references.js -------------------------------------------------------------------------------- /ProjectTrackingServices/UserStory.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated from a template. 4 | // 5 | // Manual changes to this file may cause unexpected behavior in your application. 6 | // Manual changes to this file will be overwritten if the code is regenerated. 7 | // 8 | //------------------------------------------------------------------------------ 9 | 10 | namespace ProjectTrackingServices 11 | { 12 | using System; 13 | using System.Collections.Generic; 14 | 15 | public partial class UserStory 16 | { 17 | public UserStory() 18 | { 19 | this.ProjectTasks = new HashSet(); 20 | } 21 | 22 | public int UserStoryID { get; set; } 23 | public string Story { get; set; } 24 | public Nullable ProjectID { get; set; } 25 | 26 | public virtual Project Project { get; set; } 27 | public virtual ICollection ProjectTasks { get; set; } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | 
2 |

ASP.NET

3 |

ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS, and JavaScript.

4 |

Learn more »

5 |
6 |
7 |
8 |

Getting started

9 |

ASP.NET Web API is a framework that makes it easy to build HTTP services that reach 10 | a broad range of clients, including browsers and mobile devices. ASP.NET Web API 11 | is an ideal platform for building RESTful applications on the .NET Framework.

12 |

Learn more »

13 |
14 |
15 |

Get more libraries

16 |

NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.

17 |

Learn more »

18 |
19 |
20 |

Web Hosting

21 |

You can easily find a web hosting company that offers the right mix of features and price for your applications.

22 |

Learn more »

23 |
24 |
25 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = null; 3 | } 4 | 5 | 6 | 7 | 8 | 9 | Error 10 | 11 | 12 |
13 |

Error.

14 |

An error occurred while processing your request.

15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | @ViewBag.Title 7 | @Styles.Render("~/Content/css") 8 | @Scripts.Render("~/bundles/modernizr") 9 | 10 | 11 | 29 |
30 | @RenderBody() 31 |
32 |
33 |

© @DateTime.Now.Year - My ASP.NET Application

34 |
35 |
36 | 37 | @Scripts.Render("~/bundles/jquery") 38 | @Scripts.Render("~/bundles/bootstrap") 39 | @RenderSection("scripts", required: false) 40 | 41 | 42 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Views/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } 4 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /ProjectTrackingServices/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /ProjectTrackingServices/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/favicon.ico -------------------------------------------------------------------------------- /ProjectTrackingServices/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ProjectTrackingServices/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ProjectTrackingServices/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/ProjectTrackingServices.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/ProjectTrackingServices.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/ProjectTrackingServices.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/ProjectTrackingServices.dll -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/ProjectTrackingServices.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/ProjectTrackingServices.pdb -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/TempPE/ProjectTrackingDB.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/TempPE/ProjectTrackingDB.Designer.cs.dll -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/TempPE/ProjectTrackingDB.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/TempPE/ProjectTrackingDB.cs.dll -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingServices/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /ProjectTrackingServices/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.21005.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectTrackingWebsite", "ProjectTrackingWebsite\ProjectTrackingWebsite.csproj", "{FEEA6F63-F203-4952-A7F3-E0837BF153B0}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectTrackingServices", "ProjectTrackingServices\ProjectTrackingServices.csproj", "{CD8776D1-6F92-44AA-9DF4-B3BD97E5FB26}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {FEEA6F63-F203-4952-A7F3-E0837BF153B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {FEEA6F63-F203-4952-A7F3-E0837BF153B0}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {FEEA6F63-F203-4952-A7F3-E0837BF153B0}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {FEEA6F63-F203-4952-A7F3-E0837BF153B0}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {CD8776D1-6F92-44AA-9DF4-B3BD97E5FB26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {CD8776D1-6F92-44AA-9DF4-B3BD97E5FB26}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {CD8776D1-6F92-44AA-9DF4-B3BD97E5FB26}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {CD8776D1-6F92-44AA-9DF4-B3BD97E5FB26}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingWebsite.v12.suo -------------------------------------------------------------------------------- /ProjectTrackingWebsite/App_Start/WebApiConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web.Http; 5 | 6 | namespace ProjectTrackingWebsite 7 | { 8 | public static class WebApiConfig 9 | { 10 | public static void Register(HttpConfiguration config) 11 | { 12 | config.MapHttpAttributeRoutes(); 13 | 14 | config.Routes.MapHttpRoute( 15 | name: "DefaultApi", 16 | routeTemplate: "api/{controller}/{id}", 17 | defaults: new { id = RouteParameter.Optional } 18 | ); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/CSS/Site.css: -------------------------------------------------------------------------------- 1 | /*body { 2 | background-color: #fff; 3 | }*/ 4 | 5 | img { 6 | border: none; 7 | } 8 | 9 | footer { 10 | background-color: #ad1d28; 11 | margin-top: 2%; 12 | color: #fff; 13 | height:100px; 14 | text-align: center; 15 | } 16 | 17 | footer div { 18 | text-align: center; 19 | } 20 | 21 | footer a { 22 | color: #fff; 23 | text-decoration: underline; 24 | } 25 | 26 | footer a:visited { 27 | color: #fff; 28 | } 29 | 30 | footer a:hover { 31 | color: #fff; 32 | } 33 | /*Start BootStrap Menu Customization*/ 34 | 35 | .dropdown-menu .sub-menu { 36 | left: 100%; 37 | position: absolute; 38 | top: 0; 39 | visibility: hidden; 40 | margin-top: -1px; 41 | } 42 | 43 | .dropdown-menu li:hover .sub-menu { 44 | visibility: visible; 45 | } 46 | 47 | .dropdown:hover .dropdown-menu { 48 | display: block; 49 | } 50 | 51 | .nav-tabs .dropdown-menu, .nav-pills .dropdown-menu, .navbar .dropdown-menu { 52 | margin-top: 0; 53 | } 54 | 55 | .navbar .sub-menu:before { 56 | border-bottom: 7px solid transparent; 57 | border-left: none; 58 | border-right: 7px solid rgba(0, 0, 0, 0.2); 59 | border-top: 7px solid transparent; 60 | left: -7px; 61 | top: 10px; 62 | } 63 | 64 | .navbar .sub-menu:after { 65 | border-top: 6px solid transparent; 66 | border-left: none; 67 | border-right: 6px solid #fff; 68 | border-bottom: 6px solid transparent; 69 | left: 10px; 70 | top: 11px; 71 | left: -6px; 72 | } 73 | /*End BootStrap Menu Customization*/ 74 | div.board { 75 | float:left; 76 | height: 200px; 77 | width: 300px; 78 | margin-left: 2%; 79 | margin-right: 2%; 80 | } 81 | hr { display: block; height: 1px; 82 | border: 0; border-top: 1px solid #ccc; 83 | margin: 1em 0; padding: 0; } 84 | 85 | .slideBody{ 86 | width: 650px; 87 | margin-left: 100px; 88 | } 89 | 90 | .carousel{ 91 | height: 200px; 92 | } 93 | 94 | .carousel-button{ 95 | text-align: right; 96 | margin-right: -20px; 97 | } -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Controllers/EmployeesController.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var EmployeesController = function ($scope,employeeService,$log) { 3 | var employees = function (data) { 4 | $scope.Employees = data; 5 | }; 6 | $scope.searchEmployees = function (employeeName) { 7 | employeeService.searchEmployees(employeeName) 8 | .then(employees, errorDetails); 9 | $log.info("Found Employee which contains - " + employeeName); 10 | }; 11 | var errorDetails = function (serviceResp) { 12 | $scope.Error="Something went wrong ??"; 13 | }; 14 | employeeService.employees().then(employees,errorDetails); 15 | $scope.Title = "Employee Details Page"; 16 | $scope.employeeName = null; 17 | }; 18 | app.controller("EmployeesController", ["$scope", "employeeService", "$log", EmployeesController]); 19 | }()); -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Controllers/ManagerCommentsController.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var ManagerCommentsController = function ($scope, managerCommentsService) { 3 | var managerComments = function (data) { 4 | $scope.Comments = data; 5 | }; 6 | var errorDetails = function (serviceResp) { 7 | $scope.Error = "Something went wrong ??"; 8 | }; 9 | managerCommentsService.managerComments().then(managerComments, errorDetails); 10 | $scope.Title = "Manager comments Page"; 11 | }; 12 | app.controller("ManagerCommentsController", ["$scope", "managerCommentsService", ManagerCommentsController]); 13 | }()); -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Controllers/ProjectTasksController.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var ProjectTasksController = function ($scope, $location, projectTasksService, userStoriesService) { 3 | var userStories = function (data) { 4 | $scope.Stories = data; 5 | }; 6 | var errorDetails = function (serviceResp) { 7 | $scope.Error = "Something went wrong!!"; 8 | }; 9 | 10 | userStoriesService.userStories().then(userStories, errorDetails); 11 | 12 | var projectTasks = function (data) { 13 | $scope.Tasks = data; 14 | }; 15 | var errorDetails = function (serviceResp) { 16 | $scope.Error = "Something went wrong ??"; 17 | }; 18 | 19 | $scope.assignTask = function () { 20 | $scope.task.userStoryID = $scope.userStorySelected.userStoryID; 21 | 22 | projectTasksService.addProjectTask($scope.task).then(function () { 23 | $location.path("/Tasks"); 24 | }); 25 | }; 26 | 27 | projectTasksService.projectTasks().then(projectTasks, errorDetails); 28 | $scope.Title = "Project Tasks Page"; 29 | }; 30 | app.controller("ProjectTasksController", ["$scope", "$location", "projectTasksService", "userStoriesService", ProjectTasksController]); 31 | }()); -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Controllers/UserStoriesController.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var UserStoriesController = function ($scope, $location, userStoriesService, projectService) { 3 | var userStories = function (data) { 4 | $scope.Stories = data; 5 | }; 6 | var errorDetails = function (serviceResp) { 7 | $scope.Error = "Something went wrong ??"; 8 | }; 9 | 10 | $scope.addUserStory = function () { 11 | userStoriesService.addUserStory({ projectID: $scope.userStory.projectSelected.projectID, story: $scope.userStory.story }) 12 | .then(function (userStories) { 13 | $location.path("/UserStories"); 14 | }); 15 | }; 16 | 17 | userStoriesService.userStories().then(userStories, errorDetails); 18 | 19 | projectService.projects().then(function (projects) { 20 | $scope.projects = projects; 21 | }); 22 | 23 | $scope.Title = "User Stories Page"; 24 | }; 25 | app.controller("UserStoriesController", ["$scope", "$location", "userStoriesService", "projectService", UserStoriesController]); 26 | }()); -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Employees/EmployeeDetails.html: -------------------------------------------------------------------------------- 1 |  2 |

{{Title}}

3 |
4 | Add New Employee 5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
Enter Employee Name Or Character To Search -
14 |
15 | 16 | 17 | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 43 | 44 | 45 | 46 | 49 | 52 | 55 | 58 | 61 | 64 | 67 | 70 | 71 | 72 |
19 | Employee ID 20 | 22 | Employee Name 23 | 25 | Designation 26 | 28 | Contact No. 29 | 31 | EMailID 32 | 34 | Skill Sets 35 | 37 | Modify Employee 38 | 40 | Delete Employee 41 |
47 | {{emp.employeeID}} 48 | 50 | {{emp.employeeName}} 51 | 53 | {{emp.designation}} 54 | 56 | {{emp.contactNo}} 57 | 59 | {{emp.eMailID}} 60 | 62 | {{emp.skillSets}} 63 | 65 | Modify 66 | 68 | Delete 69 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="ProjectTrackingWebsite.Global" Language="C#" %> 2 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Security; 6 | using System.Web.SessionState; 7 | 8 | namespace ProjectTrackingWebsite 9 | { 10 | public class Global : System.Web.HttpApplication 11 | { 12 | protected void Application_Start(object sender, EventArgs e) 13 | { 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Home.html: -------------------------------------------------------------------------------- 1 | 
2 | 3 |
4 | 5 | 6 |

{{slide.header}}

7 |

{{slide.body}}

8 |
9 |
10 |
11 | 12 |
13 |
14 |
15 |

Our Mission

16 |
17 |
18 | Build the web application to manage the projects online through out the organization. 19 |
20 |
21 | 22 |
23 |
24 |

Managers

25 |
26 |
27 | The Managers can manage and track their project progress using this site. 28 |
29 |
30 |
31 |
32 |

Purpose

33 |
34 |
35 | Make developers learn and build the complete website using HTML 5, CSS 3, CSS Bootstrap and Angular JS. 36 |
37 |
38 |
39 |
40 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Images/Twitter_bird_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingWebsite/Images/Twitter_bird_icon.png -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Images/facebook-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingWebsite/Images/facebook-icon.png -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Images/linkedin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnetcurry/angular-webapi-series/d381e286e673631359650436ac3d45868cb87e89/ProjectTrackingWebsite/Images/linkedin.png -------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ManagerCommentDetails.html: -------------------------------------------------------------------------------- 1 | 

{{Title}}

2 |
3 | Add New Comment 4 |
5 | 6 | 7 | 8 | 11 | 14 | 17 | 20 | 21 | 22 | 23 | 24 | 27 | 30 | 33 | 36 | 37 | 38 |
9 | Comment ID 10 | 12 | Comments 13 | 15 | Modify Comment 16 | 18 | Delete Comment 19 |
25 | {{comment.managerCommentID}} 26 | 28 | {{comment.comments}} 29 | 31 | Modify 32 | 34 | Delete 35 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ManagerCommentInsert.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Insert Manager Comment 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 |
12 | Cancel 13 | Save Comment 14 |
15 |
16 |
17 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ManagerCommentModify.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Update Manager Comment 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 |
12 | Cancel 13 | Modify Comment 14 |
15 |
16 |
17 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ProjectDetails.html: -------------------------------------------------------------------------------- 1 | 

{{Title}}

2 |
3 | Add New Project 4 |
5 | 6 | 7 | 8 | 11 | 14 | 17 | 20 | 23 | 26 | 29 | 30 | 31 | 32 | 33 | 36 | 39 | 42 | 45 | 48 | 51 | 54 | 55 | 56 |
9 | Project ID 10 | 12 | Project Name 13 | 15 | Start Date 16 | 18 | End Date 19 | 21 | Client Name 22 | 24 | Modify Project 25 | 27 | Delete Project 28 |
34 | {{proj.projectID}} 35 | 37 | {{proj.projectName}} 38 | 40 | {{proj.startDate | date:'mediumDate'}} 41 | 43 | {{proj.endDate | date:'mediumDate'}} 44 | 46 | {{proj.clientName}} 47 | 49 | Modify 50 | 52 | Delete 53 |
57 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ProjectInsert.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Insert New Project 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 |
30 | Cancel 31 | Insert Project 32 |
33 |
34 |
35 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectManagement/ProjectModify.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Modify Project 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | 30 |
31 | 32 |
33 |
34 |
35 |
36 | Cancel 37 | Modify Project 38 |
39 |
40 |
41 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/ProjectTrackingWebsite.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | True 5 | False 6 | True 7 | 8 | False 9 | 10 | 11 | 12 | 13 | 14 | Layout.html 15 | SpecificPage 16 | True 17 | False 18 | False 19 | False 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | True 29 | True 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ProjectTrackingWebsite")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ProjectTrackingWebsite")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("caa7aca0-675e-42d0-9dbe-38d7628fb360")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Scripts/angular-cookies.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.18 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore", 7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular); 8 | //# sourceMappingURL=angular-cookies.min.js.map 9 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Scripts/angular-cookies.min.js.map: -------------------------------------------------------------------------------- 1 | { 2 | "version":3, 3 | "file":"angular-cookies.min.js", 4 | "lineCount":7, 5 | "mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CAyBW,UAzBX,CAyBuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CACEY,CAKA,CALQZ,CAAA,CAAQW,CAAR,CAKR,CAJKjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAIL,GAHEA,CACA,CADQ,EACR,CADaA,CACb,CAAAZ,CAAA,CAAQW,CAAR,CAAA,CAAgBC,CAElB,EAAIA,CAAJ,GAAcX,CAAA,CAAYU,CAAZ,CAAd,GACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CAFZ,CAOF,IAAIA,CAAJ,CAIE,IAAKF,CAAL,GAFAI,EAEaf,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBI,CAAA,CAAeJ,CAAf,CAAtB,GAEMN,CAAA,CAAYU,CAAA,CAAeJ,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBI,CAAA,CAAeJ,CAAf,CALpB,CAhCU,CAThB,CAEA,OAAOX,EA1BqE,CAA3D,CAzBvB,CAAAH,QAAA,CAkIW,cAlIX;AAkI2B,CAAC,UAAD,CAAa,QAAQ,CAACmB,CAAD,CAAW,CAErD,MAAO,KAWAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHN,CACG,CADKI,CAAA,CAASE,CAAT,CACL,EAAQxB,CAAAyB,SAAA,CAAiBP,CAAjB,CAAR,CAAkCA,CAFxB,CAXd,KA0BAQ,QAAQ,CAACF,CAAD,CAAMN,CAAN,CAAa,CACxBI,CAAA,CAASE,CAAT,CAAA,CAAgBxB,CAAA2B,OAAA,CAAeT,CAAf,CADQ,CA1BrB,QAuCGU,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CAvCjB,CAF8C,CAAhC,CAlI3B,CAnBsC,CAArC,CAAA,CAsMEzB,MAtMF,CAsMUA,MAAAC,QAtMV;", 6 | "sources":["angular-cookies.js"], 7 | "names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"] 8 | } 9 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Scripts/angular-csp.css: -------------------------------------------------------------------------------- 1 | /* Include this file in your html if you are using the CSP mode. */ 2 | 3 | @charset "UTF-8"; 4 | 5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], 6 | .ng-cloak, .x-ng-cloak, 7 | .ng-hide { 8 | display: none !important; 9 | } 10 | 11 | ng\:form { 12 | display: block; 13 | } 14 | 15 | .ng-animate-block-transitions { 16 | transition:0s all!important; 17 | -webkit-transition:0s all!important; 18 | } 19 | 20 | /* show the element during a show/hide animation when the 21 | * animation is ongoing, but the .ng-hide class is active */ 22 | .ng-hide-add-active, .ng-hide-remove { 23 | display: block!important; 24 | } 25 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/Scripts/angular-loader.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | AngularJS v1.2.18 3 | (c) 2010-2014 Google, Inc. http://angularjs.org 4 | License: MIT 5 | */ 6 | (function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.18/"+(a?a+"/":"")+c;for(b=1;b{{Title}} 2 |
3 | Add New Task 4 |
5 | 6 | 7 | 8 | 11 | 14 | 17 | 20 | 21 | 22 | 23 | 24 | 27 | 30 | 33 | 36 | 37 | 38 |
9 | Project Task ID 10 | 12 | Start Date 13 | 15 | End Date 16 | 18 | Task Completion (%) 19 |
25 | {{task.projectTaskID}} 26 | 28 | {{task.taskStartDate}} 29 | 31 | {{task.taskEndDate}} 32 | 34 | {{task.taskCompletion}}  % 35 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/Tasks/ProjectTaskInsert.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Assign New Task 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | 30 |
31 | 32 |
33 |
34 |
35 |
36 | Cancel 37 | Assign Task 38 |
39 |
40 |
41 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/Tasks/ProjectTaskModify.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Modify Task 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | 30 |
31 | 32 |
33 |
34 |
35 |
36 | Cancel 37 | Modify Task 38 |
39 |
40 |
41 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/UserStories/UserStoryDetails.html: -------------------------------------------------------------------------------- 1 | 

{{Title}}

2 |
3 | Add New User Story 4 |
5 | 6 | 7 | 8 | 11 | 14 | 17 | 18 | 19 | 20 | 21 | 24 | 27 | 30 | 31 | 32 |
9 | User Story ID 10 | 12 | User Story 13 | 15 | Project ID 16 |
22 | {{userStory.userStoryID}} 23 | 25 | {{userStory.story}} 26 | 28 | {{userStory.projectID}} 29 |
33 | -------------------------------------------------------------------------------- /ProjectTrackingWebsite/UserStories/UserStoryInsert.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Insert New User Story 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 | 15 |
16 |
17 |
18 |
19 | Cancel 20 | Save User Story 21 |
22 |
23 |
24 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/UserStories/UserStoryUpdate.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Insert New User Story 4 |
5 | 6 |
7 | 8 |
9 |
10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 | Cancel 19 | Save User Story 20 |
21 |
22 |
23 |
-------------------------------------------------------------------------------- /ProjectTrackingWebsite/Web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | --------------------------------------------------------------------------------