public IActionResult AddOrder([FromBody] JObject data, [FromServices] CourierCompanyService courierCompanyService) { Order order; Address senderAddress, recipientAddress; try { DateTime date = DateTime.Now; string paymentType = data["paymentType"].ToObject <string>(); int userId = ((User)HttpContext.Items["User"]).Id; User sender = userService.GetUser(userId); string senderName = sender.FirstName + " " + sender.LastName; int packageId = data["packageId"].ToObject <int>(); int courierCompanyId = data["courierCompanyId"].ToObject <int>(); List <int> serviceIds = data["services"].Values <int>().ToList(); CourierCompany company = courierCompanyService.GetCourierCompany(courierCompanyId); List <Service> services = company.Services.FindAll(s => serviceIds.Contains(s.Id)); Package package = company.Packages.Find(p => p.Id == packageId); string recipientName = data["recipientName"].ToObject <string>(); recipientAddress = data["recipientAddress"].ToObject <Address>(); senderAddress = data["senderAddress"].ToObject <Address>(); Type vatType = Type.GetType("JiperBackend.Strategy." + configuration.GetValue <string>("VATCalculator")); order = new Order(date, paymentType, package, senderName, senderAddress, recipientName, recipientAddress, services, (IPriceCalculator)Activator.CreateInstance(vatType)); userService.AddOrder(userId, order); } catch (NullReferenceException ex) { logger.LogException(ex); return(BadRequest()); } catch (ArgumentNullException ex) { logger.LogException(ex); return(NotFound()); } catch (FormatException ex) { logger.LogException(ex); return(NotFound()); } return(Ok(order)); }
public CourierCompanyController(CourierCompanyService dataLoader, ExceptionLogger logger) { this.courierCompanyService = dataLoader; this.logger = logger; }