using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Mvc.Routing.Constraints;
using UrlsAndRoutes.Infrastructure;

namespace UrlsAndRoutes
{
	public class RouteConfig
	{
		public static void RegisterRoutes(RouteCollection routes)
		{
			//routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

			//routes.MapRoute(
			//    name: "Default",
			//    url: "{controller}/{action}/{id}",
			//    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
			//);

			//routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" });

			//routes.MapRoute("ShopSchema", "Shop/{action}", new { controller = "Home" });

			//routes.MapRoute("", "X{controller}/{action}");

			//Route myRoute = new Route("{controller}/{action}", new MvcRouteHandler());
			//routes.Add("MyRoute", myRoute);

			//routes.MapRoute("MyRoute", "{controller}/{action}");

			//routes.MapRoute("MyRoute", "{controller}/{action}", new { action = "Index" });

			//routes.MapRoute("MyRoute", "{controller}/{action}", new { controller = "Home", action = "Index" });

			//routes.MapRoute("", "Public/{controller}/{action}", new { controler = "Home", action = "Index" });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional /* "DefaultId" */ });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new[] { "URLsAndRoutes.AdditionalControllers" });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new[] { "URLsAndRoutes.Controllers" });

			//Route myRoute = routes.MapRoute("AddControllerRoute", "Home/{action}/{id}/{*catchall}",
			//	new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new[] { "UrlsAndRoutes.AdditionalControllers" });

			//myRoute.DataTokens["UseNamespaceFallback"] = false;

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
			//	new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new { controller = "^H.*", action = "^Index$ | ^About$" },
			//	new[] { "URLsAndROutes.Controllers" });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
			//	new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new { controller = "^H.*", action = "^Index|About", httpMethod = new HttpMethodConstraint("GET"), id = new RangeRouteConstraint(10, 20) },
			//	new[] { "URLsAndROutes.Controllers" });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}",
			//	new { controller = "Home", action = "Index", id = UrlParameter.Optional },
			//	new { controller = "^H.*", action = "^Index|About", httpMethod = new HttpMethodConstraint("GET"),
			//		id = new CompoundRouteConstraint(new IRouteConstraint[] { new AlphaRouteConstraint(), new MinLengthRouteConstraint(6) }) },
			//	new[] { "URLsAndROutes.Controllers" });

			routes.MapMvcAttributeRoutes();

			//routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" });

			//routes.MapRoute("MyRoute", "{controller}/{action}/{id}",
			//	new { controller = "Home", action = "Index", id = UrlParameter.Optional });

			routes.Add(new LegacyRoute("~/articles/Windows_3.1_Overview.html", "~/old/.NET_1.0_Class_Library"));

			routes.MapRoute("MyRoute", "{controller}/{action}");
			routes.MapRoute("MyOtherRoute", "App/{action}", new { controller = "Home" });

		}
	}
}