public object Post(TransactionDTO request) { // Get the first rate in the rates results. // Customize this based on your business logic. //Rate rate = shipment.RatesList[]; var context = new shippingcoContext(); if (request.QuoteId != "" && request.QuoteId != null && request.UserId != "" && request.UserId != null && request.RateId != "" && request.RateId != null) { Hashtable transactionParameters = new Hashtable(); transactionParameters.Add("rate", request.RateId); transactionParameters.Add("async", false); try{ // Purchase the desired rate. Transaction transaction = resource.CreateTransaction(transactionParameters); if (((String)transaction.Status).Equals("SUCCESS", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("Label url: " + transaction.LabelURL); Console.WriteLine("Tracking number: " + transaction.TrackingNumber); var shipment = resource.RetrieveShipment(request.QuoteId); var rate = resource.RetrieveRate(request.RateId); var from = new ShippmentUnit(); var to = new ShippmentUnit(); var parcel = new MyApp.DataAccess.DataAccess.Parcel(); var order = new Orders(); var apiShipmentObject = (Address)((JObject)shipment.AddressFrom).ToObject(typeof(Address)); from.StreetNumber = apiShipmentObject.StreetNo.ToString(); from.StreetAddress = apiShipmentObject.Street1.ToString(); from.City = apiShipmentObject.City.ToString(); from.Province = apiShipmentObject.State.ToString(); from.PostalCode = apiShipmentObject.Zip.ToString(); from.Country = apiShipmentObject.Country.ToString(); from.Name = apiShipmentObject.Name.ToString(); from.Company = apiShipmentObject.Company.ToString(); apiShipmentObject = (Address)((JObject)shipment.AddressTo).ToObject(typeof(Address)); to.StreetNumber = apiShipmentObject.StreetNo.ToString(); to.StreetAddress = apiShipmentObject.Street1.ToString(); to.City = apiShipmentObject.City.ToString(); to.Province = apiShipmentObject.State.ToString(); to.PostalCode = apiShipmentObject.Zip.ToString(); to.Country = apiShipmentObject.Country.ToString(); to.Name = apiShipmentObject.Name.ToString(); to.Company = apiShipmentObject.Company.ToString(); var apiParcelObject = (Shippo.Parcel)((JObject)shipment.Parcels[0]).ToObject(typeof(Shippo.Parcel)); parcel.Height = Decimal.Parse(apiParcelObject.Height.ToString()); parcel.Width = Decimal.Parse(apiParcelObject.Width.ToString()); parcel.Weight = Decimal.Parse(apiParcelObject.Weight.ToString()); parcel.Length = Decimal.Parse(apiParcelObject.Length.ToString()); parcel.MassUnit = apiParcelObject.MassUnit.ToString(); parcel.DistanceUnit = apiParcelObject.DistanceUnit.ToString(); context.ShippmentUnit.Add(from); context.ShippmentUnit.Add(to); context.Parcel.Add(parcel); context.SaveChanges(); order.UserId = Int32.Parse(request.UserId); order.FromId = from.Id; order.ToId = to.Id; order.ParcelId = parcel.Id; order.Date = (DateTime)shipment.ShipmentDate; order.Amount = Decimal.Parse(rate.Amount.ToString()); order.Currency = rate.Currency.ToString(); order.Provider = rate.Provider.ToString(); order.ServiceLevel = rate.Servicelevel.Name.ToString(); order.Estimate = rate.EstimatedDays.ToString(); order.Image = rate.ProviderImage200.ToString(); order.LabelUrl = transaction.LabelURL.ToString(); order.TrackingNumber = transaction.TrackingNumber.ToString(); order.TrackingUrl = transaction.TrackingUrlProvider.ToString(); //order.Eta = transaction..tostring(); context.Orders.Add(order); context.SaveChanges(); //var response = "{\"success\": \"success\"} " ; //return response; var response = "{\"success\": \"transaction Sccess\" ," + "\"label\" : \"" + transaction.LabelURL.ToString() + "\" ," + "\"transaction\" : \"" + transaction.TrackingNumber.ToString() + "\"}"; return(response); } else { Console.WriteLine("Error generating label. Messages: " + transaction.Messages); var response = "{\"error\": \"exception caught by server\" ," + "\"details\" : " + transaction.Messages.ToString() + "}"; return(response); } } catch (Exception e) { var response = "{\"error\": \"exception caught by server\" ," + "\"details\" : " + e.Message.ToString() + "}"; return(response); } } if (request.UserId != "" && request.QuoteId == null && request.RateId == null) { var responseList = new List <TransactionDTOResponse>(); var from = new ShippmentUnit(); var to = new ShippmentUnit(); var parcel = new MyApp.DataAccess.DataAccess.Parcel(); var client = new Client(); var order = new Orders(); var user = new Users(); var userAuth = new UserAuth(); var orders = context.Orders .Where(q => q.UserId.ToString() == request.UserId) .ToList(); foreach (var q in orders) { to = context.ShippmentUnit .Where(u => u.Id.ToString() == q.ToId.ToString()) .ToList().First(); from = context.ShippmentUnit .Where(u => u.Id.ToString() == q.FromId.ToString()) .ToList().First(); parcel = context.Parcel .Where(p => p.Id.ToString() == q.ParcelId.ToString()) .ToList().First(); // client = context.Client // .Where(c => c.Id.ToString() == request.UserId) // .ToList().First(); var rlist = new TransactionDTOResponse(); rlist.from = from; rlist.to = to; rlist.parcel = parcel; rlist.order = q; responseList.Add(rlist); } var response = "{\"success\": \"success\" ," + "\"orders\" : " + JSON.stringify(responseList) + "}"; return(response); } return(null); }
public object Post(QuoteDTO request) { var context = new shippingcoContext(); if (request.QuoteId != "" && request.QuoteId != null && request.UserId != "" && request.UserId != null && request.RateId != "" && request.RateId != null) { var shipment = resource.RetrieveShipment(request.QuoteId); var rate = resource.RetrieveRate(request.RateId); var from = new ShippmentUnit(); var to = new ShippmentUnit(); var parcel = new MyApp.DataAccess.DataAccess.Parcel(); var quote = new Quotes(); var apiShipmentObject = (Address)((JObject)shipment.AddressFrom).ToObject(typeof(Address)); from.StreetNumber = apiShipmentObject.StreetNo.ToString(); from.StreetAddress = apiShipmentObject.Street1.ToString(); from.City = apiShipmentObject.City.ToString(); from.Province = apiShipmentObject.State.ToString(); from.PostalCode = apiShipmentObject.Zip.ToString(); from.Country = apiShipmentObject.Country.ToString(); from.Name = apiShipmentObject.Name.ToString(); from.Company = apiShipmentObject.Company.ToString(); apiShipmentObject = (Address)((JObject)shipment.AddressTo).ToObject(typeof(Address)); to.StreetNumber = apiShipmentObject.StreetNo.ToString(); to.StreetAddress = apiShipmentObject.Street1.ToString(); to.City = apiShipmentObject.City.ToString(); to.Province = apiShipmentObject.State.ToString(); to.PostalCode = apiShipmentObject.Zip.ToString(); to.Country = apiShipmentObject.Country.ToString(); to.Name = apiShipmentObject.Name.ToString(); to.Company = apiShipmentObject.Company.ToString(); var apiParcelObject = (Shippo.Parcel)((JObject)shipment.Parcels[0]).ToObject(typeof(Shippo.Parcel)); parcel.Height = Decimal.Parse(apiParcelObject.Height.ToString()); parcel.Width = Decimal.Parse(apiParcelObject.Width.ToString()); parcel.Weight = Decimal.Parse(apiParcelObject.Weight.ToString()); parcel.Length = Decimal.Parse(apiParcelObject.Length.ToString()); parcel.MassUnit = apiParcelObject.MassUnit.ToString(); parcel.DistanceUnit = apiParcelObject.DistanceUnit.ToString(); context.ShippmentUnit.Add(from); context.ShippmentUnit.Add(to); context.Parcel.Add(parcel); context.SaveChanges(); quote.UserId = Int32.Parse(request.UserId); quote.FromId = from.Id; quote.ToId = to.Id; quote.ParcelId = parcel.Id; quote.Date = (DateTime)shipment.ShipmentDate; quote.Amount = Decimal.Parse(rate.Amount.ToString()); quote.Currency = rate.Currency.ToString(); quote.Provider = rate.Provider.ToString(); quote.ServiceLevel = rate.Servicelevel.Name.ToString(); quote.Estimate = rate.EstimatedDays.ToString(); quote.Image = rate.ProviderImage200.ToString(); context.Quotes.Add(quote); context.SaveChanges(); var response = "{\"success\": \"success\"} "; return(response); } if (request.UserId != "" && request.QuoteId == null && request.RateId == null) { var responseList = new List <QuoteDTOResponse>(); var from = new ShippmentUnit(); var to = new ShippmentUnit(); var parcel = new MyApp.DataAccess.DataAccess.Parcel(); var client = new Client(); var quote = new Quotes(); var user = new Users(); var quotes = context.Quotes .Where(q => q.UserId.ToString() == request.UserId) .ToList(); foreach (var q in quotes) { to = context.ShippmentUnit .Where(u => u.Id.ToString() == q.ToId.ToString()) .ToList().First(); from = context.ShippmentUnit .Where(u => u.Id.ToString() == q.FromId.ToString()) .ToList().First(); parcel = context.Parcel .Where(p => p.Id.ToString() == q.ParcelId.ToString()) .ToList().First(); // client = context.Client // .Where(c => c.Id.ToString() == request.UserId) // .ToList().First(); var rlist = new QuoteDTOResponse(); rlist.from = from; rlist.to = to; rlist.parcel = parcel; rlist.quote = q; responseList.Add(rlist); } var response = "{\"success\": \"success\" ," + "\"quotes\" : " + JSON.stringify(responseList) + "}"; return(response); } return("{\"error\": \"Invalid Request\"}"); }