public static List <int> GetBuses(RouteDataModel route) { var names = new List <int>(); foreach (var item in route.Buses) { names.Add(item.NumberOfBus); } return(names); }
private bool CheckCity(ref string err, RouteDataModel route, string pointA, string pointB) { var isPointA = route.Points.SingleOrDefault(p => p.City.Name == pointA); var isPointB = route.Points.SingleOrDefault(p => p.City.Name == pointB); if (isPointA == null || isPointB == null) { err = "Incorrect route"; return(false); } else { return(true); } }
private double GetPrice(RouteDataModel route, string pointA, string pointB) { var startRoute = route.Cities.First().Name; if (startRoute == pointA && route.Cities.Last().Name == pointB) { return(route.Price); } if (startRoute == pointA) { return(route.Points.Single(p => p.City.Name == pointB).Price); } var price1 = route.Points.Single(p => p.City.Name == pointA).Price; var price2 = route.Points.Single(p => p.City.Name == pointB).Price; return(price2 - price1); }
public void ProcessRequest(HttpContext context) { try { string requestContentType = context.Request.ContentType.ToLower().Trim(); this.context = context; request = context.Request; response = context.Response; server = context.Server; routeData = request.RequestContext.RouteData; string route = (routeData.Route as Route).Url; if (application.pages.ContainsKey(route)) { init(); index(); } else if (application.methods.ContainsKey(route)) { MethodInfo method = application.methods[route]; if (method.GetCustomAttribute <SkipInit>() == null) { init(); } List <object> methodParams = new List <object>(); foreach (ParameterInfo param in method.GetParameters()) { bool isModel = param.GetCustomAttribute <WebMetalModel>(true) != null; if (!isModel) { if (request.Form[param.Name] != null) { methodParams.Add(Utility.ChangeType(request.Form[param.Name], param.ParameterType)); } else if (request.QueryString[param.Name] != null) { methodParams.Add(Utility.ChangeType(request.QueryString[param.Name], param.ParameterType)); } else if (routeData.Values[param.Name] != null) { methodParams.Add(Utility.ChangeType(routeData.Values[param.Name], param.ParameterType)); } else { methodParams.Add(param.ParameterType.IsValueType ? Activator.CreateInstance(param.ParameterType) : null); } } else { QueryStringModel queryStringModel = param.GetCustomAttribute <QueryStringModel>(true); FormFieldsModel formFieldsModel = param.GetCustomAttribute <FormFieldsModel>(true); RequestBodyModel requestBodyModel = param.GetCustomAttribute <RequestBodyModel>(true); RouteDataModel routeDataModel = param.GetCustomAttribute <RouteDataModel>(true); if (queryStringModel != null) { methodParams.Add(Utility.MapCollectionToObject(context.Request.QueryString, param.ParameterType)); } else if (formFieldsModel != null) { methodParams.Add(Utility.MapCollectionToObject(context.Request.Form, param.ParameterType)); } else if (routeDataModel != null) { methodParams.Add(Utility.MapCollectionToObject(routeData.Values, param.ParameterType)); } else if (requestBodyModel != null) { if (!string.IsNullOrEmpty(requestBodyModel.mimeType)) { requestContentType = requestBodyModel.mimeType; } if (!application.mimeTypeHandlers.ContainsKey(requestContentType)) { throw new NotImplementedException(string.Format("A mime type handler for '{0}' has not been implemented.", requestContentType)); } MimeTypeHandler requestMimeHandler = application.mimeTypeHandlers[requestContentType]; methodParams.Add(requestMimeHandler.deserialize(context.Request.InputStream, param.ParameterType)); } } } object ret = method.Invoke(this, methodParams.ToArray()); if (ret != null) { response.Write(ret); } } } catch (Exception ex) { error(ex); } }