// Genera public void Set_parameters(ref LTLQuoteRequest ltl_quote_request, ref QuoteData quoteData) { if (ltl_quote_request.totalCube == null) { // Do nothing } else { quoteData.totalCube = (double)ltl_quote_request.totalCube; } if (ltl_quote_request.linealFeet == null) { // Do nothing } else { quoteData.linealFeet = (double)ltl_quote_request.linealFeet; } #region pickup date quoteData.puDate = ltl_quote_request.pickupDate; #endregion #region Boolean flags for (byte i = 0; i < ltl_quote_request.items.Count; i++) { if (ltl_quote_request.items[i].hazmat == true) { quoteData.isHazmat = true; break; } else { // Do nothing } } if (ltl_quote_request.items[0].length > 0) { quoteData.hasDimensions = true; } if (ltl_quote_request.items[0].freightClass > 0) { quoteData.hasFreightClass = true; } for (byte i = 0; i < ltl_quote_request.items.Count; i++) { if (ltl_quote_request.items[i].commodity == "HHG") { quoteData.isHHG = true; break; } else { // Do nothing } } for (byte i = 0; i < ltl_quote_request.items.Count; i++) { if (ltl_quote_request.items[i].commodity == "USED") { quoteData.isUSED = true; break; } else { // Do nothing } } double total_weight = 0.0; for (byte i = 0; i < ltl_quote_request.items.Count; i++) { if (ltl_quote_request.items[i].weight > 0) { total_weight += (double)ltl_quote_request.items[i].weight; } else { // Do nothing } } if (total_weight < 500 && quoteData.isHHG == true) { quoteData.isHHG_AndUnder500 = true; } #endregion //quoteData.username = username; //DB.Log("username", quoteData.username.ToString()); quoteData.is_like_NetNet = Is_login_like_NetNet(quoteData.username); quoteData.is_good_USF_Holland_orig_state = Is_good_USF_Holland_orig_state(ref quoteData); #region Origin and Destination string[] split_arr; split_arr = ltl_quote_request.originZip.Trim().Split(' '); if (split_arr.Length == 2) { quoteData.origZip = split_arr[0] + split_arr[1]; } else { quoteData.origZip = ltl_quote_request.originZip; } //if (ltl_quote_request.originZip) split_arr = ltl_quote_request.destinationZip.Trim().Split(' '); if (split_arr.Length == 2) { quoteData.destZip = split_arr[0] + split_arr[1]; } else { quoteData.destZip = ltl_quote_request.destinationZip; } //quoteData.destZip = ltl_quote_request.destinationZip; quoteData.origCity = ltl_quote_request.originCity; quoteData.destCity = ltl_quote_request.destinationCity; quoteData.origState = ltl_quote_request.originState; quoteData.destState = ltl_quote_request.destinationState; #endregion quoteData.mode = "ws"; int numOfUnits; SetLTLPiecesObject(out quoteData.numOfUnitsPieces, out numOfUnits, ref ltl_quote_request, ref quoteData); quoteData.totalUnits = numOfUnits; #region Accessorials quoteData.AccessorialsObj = new HelperFuncs.AccessorialsObj(); HelperFuncs.setAccessorialsObject(ref quoteData, ref quoteData.AccessorialsObj, ltl_quote_request.additionalServices.RSP, ltl_quote_request.additionalServices.RSD, ltl_quote_request.additionalServices.CSP, ltl_quote_request.additionalServices.CSD, ltl_quote_request.additionalServices.ISD, ltl_quote_request.additionalServices.AMP, ltl_quote_request.additionalServices.AMD, ltl_quote_request.additionalServices.TSP, ltl_quote_request.additionalServices.TSD, ltl_quote_request.additionalServices.TGP, ltl_quote_request.additionalServices.TGD, false, false, false, false ); #endregion }
/// <summary> /// Genera /// </summary> private void SetLTLPiecesObject(out int numOfUnitsPieces, out int numOfUnits, ref LTLQuoteRequest ltl_quote_request, ref QuoteData quoteData) { // numOfUnitsPieces = 0; numOfUnits = 0; int Quantity = 0, pieces = 0;// intResult, //double parsedDouble; // quoteData.m_lPieceList = new List <LTLPiece>(); quoteData.m_lPiece_actual_List = new List <LTLPiece>(); // // int Units = 0, Pieces = 0; try { for (byte i = 1; i <= ltl_quote_request.items.Count; i++) { if (ltl_quote_request.items[i - 1].weight > 0) { if (ltl_quote_request.items[i - 1].pieces > 0) { pieces = ltl_quote_request.items[i - 1].pieces; } Units = 0; Pieces = 0; if (ltl_quote_request.items[i - 1].units > 0) { numOfUnitsPieces += ltl_quote_request.items[i - 1].units; numOfUnits += ltl_quote_request.items[i - 1].units; Quantity = ltl_quote_request.items[i - 1].units; // Units = ltl_quote_request.items[i - 1].units; Pieces = pieces; } else if (ltl_quote_request.items[i - 1].pieces > 0) { numOfUnitsPieces += ltl_quote_request.items[i - 1].pieces; Quantity = ltl_quote_request.items[i - 1].pieces; // Pieces = ltl_quote_request.items[i - 1].pieces; } else { numOfUnitsPieces += 1; Quantity = 1; Pieces = pieces; } LTLPiece ltlPiece = new LTLPiece(); LTLPiece ltlPiece_actual = new LTLPiece(); // Set class weight and quantity //--------------------------------------------------------------------------------- if (quoteData.isHHG.Equals(true)) { ltlPiece.FreightClass = "150"; ltlPiece_actual.FreightClass = "150"; //DB.Log("hhg", ""); } else { ltlPiece.FreightClass = ltl_quote_request.items[i - 1].freightClass.ToString(); ltlPiece_actual.FreightClass = ltl_quote_request.items[i - 1].freightClass.ToString(); //DB.Log("not hhg", ""); } //ltlPiece.FreightClass = Request.QueryString["q_Class" + i.ToString()]; // Check if this rate has freight class if (i.Equals(1) && (string.IsNullOrEmpty(ltlPiece.FreightClass) || ltlPiece.FreightClass.Equals("-1"))) { quoteData.hasFreightClass = false; } if (i.Equals(1) && quoteData.isHHG_AndUnder500 == true && quoteData.extraWeight > 0) { // Extra weight ltlPiece.Weight = (double)ltl_quote_request.items[i - 1].weight + quoteData.extraWeight; quoteData.totalWeight += ltlPiece.Weight; ltlPiece_actual.Weight = (double)ltl_quote_request.items[i - 1].weight; //ltlPiece_actual.Weight = (int)ltlPiece_actual.Weight; } else { // Regular case ltlPiece.Weight = (double)ltl_quote_request.items[i - 1].weight; quoteData.totalWeight += ltlPiece.Weight; ltlPiece_actual.Weight = (double)ltl_quote_request.items[i - 1].weight; //ltlPiece_actual.Weight = (int)ltlPiece_actual.Weight; } ltlPiece.Quantity = Quantity; ltlPiece.Units = Units; ltlPiece.Pieces = Pieces; ltlPiece_actual.Quantity = Quantity; ltlPiece_actual.Units = Units; ltlPiece_actual.Pieces = Pieces; //--------------------------------------------------------------------------------- #region Set dimensions // If there are no dims they are set to 0 by default, otherwise set dims if (ltl_quote_request.items[i - 1].length > 0) { ltlPiece.Length = (double)ltl_quote_request.items[i - 1].length; ltlPiece_actual.Length = (double)ltl_quote_request.items[i - 1].length; } if (ltl_quote_request.items[i - 1].width > 0) { ltlPiece.Width = (double)ltl_quote_request.items[i - 1].width; ltlPiece_actual.Width = (double)ltl_quote_request.items[i - 1].width; } if (ltl_quote_request.items[i - 1].height > 0) { ltlPiece.Height = (double)ltl_quote_request.items[i - 1].height; ltlPiece_actual.Height = (double)ltl_quote_request.items[i - 1].height; } #endregion ltlPiece.HazMat = quoteData.isHazmat; ltlPiece_actual.HazMat = quoteData.isHazmat; // Commodity //if (form.Get("q_Commodity" + i.ToString()) != null) //{ // ltlPiece.Commodity = form.Get("q_Commodity" + i.ToString()); //} ltlPiece.Commodity = ltl_quote_request.items[i - 1].commodity; ltlPiece_actual.Commodity = ltl_quote_request.items[i - 1].commodity; quoteData.m_lPieceList.Add(ltlPiece); quoteData.m_lPiece_actual_List.Add(ltlPiece_actual); } } quoteData.m_lPiece = quoteData.m_lPieceList.ToArray(); quoteData.m_lPiece_actual = quoteData.m_lPiece_actual_List.ToArray(); #region For testing //for (int i = 0; i < m_lPieceList.Count; i++) //{ // DB.Log("myTest", m_lPieceList[i].FreightClass + " " + m_lPieceList[i].Weight.ToString() + // " quantity: " + m_lPieceList[i].Quantity.ToString() + " length: " + m_lPieceList[i].Length.ToString() // + " width: " + m_lPieceList[i].Width.ToString() + " height: " + m_lPieceList[i].Height.ToString(), ""); //} #endregion } catch (Exception e) { DB.LogException("SetLTLPiecesObject", e.ToString()); } }
public HttpResponseMessage Post() { try { //-- Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); //-- #region Authentication var re = Request; var headers = re.Headers; string username = "", password = ""; if (headers.Contains("username")) { username = headers.GetValues("username").First(); DB.LogGenera(iam, "username", username); } else { DB.LogGenera(iam, "username", "none found"); } if (headers.Contains("password")) { password = headers.GetValues("password").First(); DB.LogGenera(iam, "password", password); } else { DB.LogGenera(iam, "password", "none found"); } #endregion string data = this.Request.Content.ReadAsStringAsync().Result; DB.LogGenera("Get_LTL_ratesController " + AppCodeConstants.mode, "Public API data", data); string url_string = "", request_format = "", error_response = "", response_string = "", content_type = "application/json"; LTLQuoteRequest ltl_quote_request = new LTLQuoteRequest(); QuoteData quoteData = new QuoteData(); #region Parse/Deserialize request, make sure JSON is valid // Parse/Deserialize request, make sure JSON is valid Validator vld = new Validator(); vld.Validate_request_json(ref data, ref url_string, ref error_response, ref request_format, ref ltl_quote_request); #endregion // Xml_helper xml_helper = new Xml_helper(); Json_helper json_helper = new Json_helper(); Models.Public.LTL.Helper public_helper = new Models.Public.LTL.Helper(); //DB.LogGenera(iam, "Public API url_string", url_string); //DB.LogGenera(iam, "Public API error_response", error_response); //DB.LogGenera(iam, "Public API url_string", url_string); string sql = ""; if (error_response == "") { // Do nothing } else { //return error_response; response_string = error_response; var response_message = public_helper.Get_response_message(ref response_string, ref content_type); sql = string.Concat("INSERT INTO Genera_Rating(QuoteID,Request_Data,Response_Data,TotalCube) VALUES(", "0,'", data, "','", response_string, "',", ltl_quote_request.totalCube, ")"); HelperFuncs.ExecuteNonQuery(AppCodeConstants.connStringAesAPI, ref sql, "Get_LTL_ratesController"); return(response_message); } // If got to here, request is valid JSON or XML // Convert JSON or XML to URL Encoded string and get GCM rates url_string = string.Concat("username="******"&password="******"&mode=ws&subdomain=www&showDLSRates=True", "&isHHG=False&isUSED=False", url_string); //DB.LogGenera(iam, "Public API url_string", url_string); Models.LTL.Helper helper = new Models.LTL.Helper(); helper.Set_parameters(ref ltl_quote_request, ref quoteData); quoteData.username = username; quoteData.showDLSRates = true; quoteData.subdomain = "www"; #region Check for > 4 line items if (quoteData.m_lPiece.Length > 4) { DB.LogGenera(iam, "m_lPiece.Length > 4", "true"); response_string = json_helper.Build_error_response("35", "Too many freight item nodes, maximum number of item nodes is 4"); return(public_helper.Get_response_message(ref response_string, ref content_type)); } else { DB.LogGenera(iam, "m_lPiece.Length > 4", "false"); } #endregion Validator validator = new Validator(ref quoteData); RateServiceNotification validation_result = validator.Validate_rating_request(); #region If validation was not successful return error result if (validation_result.Code == "0") { // Do nothing DB.LogGenera(iam, "validation_result.Code", validation_result.Code); } else { DB.LogGenera(iam, "validation_result.Code", validation_result.Code); response_string = json_helper.Build_error_response(validation_result.Code, validation_result.Message); var response_message = public_helper.Get_response_message(ref response_string, ref content_type); sql = string.Concat("INSERT INTO Genera_Rating(QuoteID,Request_Data,Response_Data,TotalCube) VALUES(", "0,'", data, "','", response_string, "',", ltl_quote_request.totalCube, ")"); HelperFuncs.ExecuteNonQuery(AppCodeConstants.connStringAesAPI, ref sql, "Get_LTL_ratesController"); return(response_message); } #endregion quoteData.destCity = quoteData.destCity.Replace(" Twp", " Township"); quoteData.origCity = quoteData.origCity.Replace(" Twp", " Township"); LTL_Carriers carriers = new LTL_Carriers(quoteData); SharedLTL.CarriersResult result = carriers.GetRates(); #region If any rates were found return rates, if not give error result if (result.totalQuotes == null || result.totalQuotes.Length == 0) { #region If did not find any rates return error result // If did not find any rates return error result response_string = json_helper.Build_error_response("2", string.Concat("Could not find any rates. Please try again.")); var response_message = public_helper.Get_response_message(ref response_string, ref content_type); sql = string.Concat("INSERT INTO Genera_Rating(QuoteID,Request_Data,Response_Data,TotalCube) VALUES(", "0,'", data, "','", response_string, "',", ltl_quote_request.totalCube, ")"); HelperFuncs.ExecuteNonQuery(AppCodeConstants.connStringAesAPI, ref sql, "Get_LTL_ratesController"); return(response_message); #endregion } else { string[] additionalServices = new string[0]; string requestId; public_helper.StoreLTLRequestsSql( ref quoteData, ref result.totalQuotes, result.totalQuotes[0].NewLogId, data, response_string, out requestId); response_string = json_helper.Build_response(ref result.totalQuotes); var response_message = public_helper.Get_response_message(ref response_string, ref content_type); #region INSERT INTO Genera_Rating sql = string.Concat("INSERT INTO Genera_Rating(QuoteID,Request_Data,Response_Data,TotalCube) VALUES(", result.totalQuotes[0].NewLogId, ",'", data, "','", response_string, "',", ltl_quote_request.totalCube, ")"); HelperFuncs.ExecuteNonQuery(AppCodeConstants.connStringAesAPI, ref sql, "Get_LTL_ratesController"); #endregion #region INSERT INTO ResponseTimes // INSERT INTO ResponseTimes int UPS_freight_milliseconds = 0, SMTL_milliseconds = 0, BestOvernite_milliseconds = 0, NewPenn_milliseconds = 0, RL_milliseconds = 0, RRD_Truckload_milliseconds = 0; foreach (GCMRateQuote quote in result.totalQuotes) { //DB.LogGenera("quote.DisplayName", "quote.DisplayName", quote.DisplayName); if (quote.DisplayName == "UPS - Genera") { UPS_freight_milliseconds = quote.Elapsed_milliseconds; } else if (quote.DisplayName == "SMTL - Genera") { SMTL_milliseconds = quote.Elapsed_milliseconds; } else if (quote.DisplayName == "Best Overnite - Genera") { BestOvernite_milliseconds = quote.Elapsed_milliseconds; } else if (quote.DisplayName == "New Penn - Genera") { NewPenn_milliseconds = quote.Elapsed_milliseconds; } else if (quote.DisplayName == "R&L Carrier - Genera") { RL_milliseconds = quote.Elapsed_milliseconds; } else if (quote.DisplayName == "RRD Truckload") { RRD_Truckload_milliseconds = quote.Elapsed_milliseconds; } } stopwatch.Stop(); int elapsedMilliseconds = (int)stopwatch.ElapsedMilliseconds; //int seconds = elapsedMilliseconds / 1000; //int gcm_time = 0; sql = string.Concat("INSERT INTO Rate_response_times(", "QuoteID,RequestID,GCM_API,DLS,UPS_freight,SMTL,BestOvernite,NewPenn,RL,P44,Truckload) VALUES(", result.totalQuotes[0].NewLogId, ",'", requestId, "',", elapsedMilliseconds, ",", result.elapsed_milliseconds_DLS_Genera, ",", UPS_freight_milliseconds, ",", SMTL_milliseconds, ",", BestOvernite_milliseconds, ",", NewPenn_milliseconds, ",", RL_milliseconds, ",", result.elapsed_milliseconds_P44, ",", RRD_Truckload_milliseconds, ")"); HelperFuncs.ExecuteNonQuery(AppCodeConstants.conn_string_Genera, ref sql, "Get_LTL_ratesController"); #endregion return(response_message); } #endregion } catch (Exception e) { #region Unknown error DB.LogGenera(iam, "get_ltl_rates_test", e.ToString()); Json_helper json_helper = new Json_helper(); string response_string = ""; response_string = json_helper.Build_error_response("2", string.Concat("Could not find any rates. Please try again.")); Models.Public.LTL.Helper public_helper = new Models.Public.LTL.Helper(); string content_type = "application/json"; return(public_helper.Get_response_message(ref response_string, ref content_type)); #endregion } }