public IActionResult Add([FromBody] dynamic orderData) { ValidateSession(); var result = ""; try { if (orderData != null) { using (var scope = new TransactionScope()) { Lms_OrderPoco orderPoco = JsonConvert.DeserializeObject <Lms_OrderPoco>(JsonConvert.SerializeObject(orderData[0])); _addressLogic = new Lms_AddressLogic(_cache, new EntityFrameworkGenericRepository <Lms_AddressPoco>(_dbContext)); var addressList = _addressLogic.GetList(); Lms_AddressPoco newAddress = new Lms_AddressPoco(); var orderAddressData = (JObject)orderData[0]; var customerId = orderAddressData.SelectToken("customerId").ToString(); var waybillNumber = orderAddressData.SelectToken("wayBillNumber").ToString(); var customerAddressId = orderAddressData.SelectToken("customerAddressId").ToString(); var customerAddressline = orderAddressData.SelectToken("customerAddressline").ToString(); var customerUnitNo = orderAddressData.SelectToken("customerUnitNo").ToString(); var customerCityId = orderAddressData.SelectToken("customerCityId").ToString(); var customerProvinceId = orderAddressData.SelectToken("customerProvinceId").ToString(); var customerPostcode = orderAddressData.SelectToken("customerPostcode").ToString(); var orderDate = orderAddressData.SelectToken("orderDate").ToString(); orderPoco.ShipperAddressId = customerAddressId == "" ? 0 : Convert.ToInt32(customerAddressId); orderPoco.ShipperCustomerId = customerId == "" ? 0 : Convert.ToInt32(customerId); orderPoco.IsInvoiced = false; orderPoco.CreateDate = orderDate == "" ? DateTime.Today : Convert.ToDateTime(orderDate); orderPoco.CreatedBy = sessionData.UserId; orderPoco.OrderTypeId = 3; //3 for misc. order var newWbNumber = _orderLogic.GetList().OrderByDescending(c => c.WayBillNumber).Take(1).FirstOrDefault().WayBillNumber; if (!(newWbNumber.Length > 0)) { newWbNumber = _configurationLogic.GetSingleById(1).DeliveryWBNoStartFrom; } else { newWbNumber = (Convert.ToInt16(newWbNumber) + 1).ToString(); } orderPoco.WayBillNumber = newWbNumber; var customerAddressInfo = addressList.Where(c => c.Id == orderPoco.ShipperAddressId).FirstOrDefault(); if (customerAddressInfo != null) { customerAddressInfo.UnitNumber = !string.IsNullOrEmpty(customerAddressInfo.UnitNumber) ? Convert.ToString(customerAddressInfo.UnitNumber).Trim().ToUpper() : ""; if (customerAddressline.Trim().ToUpper() == customerAddressInfo.AddressLine.Trim().ToUpper() && customerUnitNo.Trim().ToUpper() == customerAddressInfo.UnitNumber && Convert.ToInt16(customerCityId) == customerAddressInfo.CityId) { if (Convert.ToInt16(customerProvinceId) != customerAddressInfo.ProvinceId || customerPostcode != customerAddressInfo.PostCode) { customerAddressInfo.ProvinceId = Convert.ToInt16(customerProvinceId); customerAddressInfo.PostCode = customerPostcode; _addressLogic.Update(customerAddressInfo); } } else { newAddress = new Lms_AddressPoco(); newAddress.AddressLine = customerAddressline; newAddress.UnitNumber = customerUnitNo; newAddress.CityId = Convert.ToInt16(customerCityId); newAddress.ProvinceId = Convert.ToInt16(customerProvinceId); newAddress.CountryId = 41; // default Canada newAddress.PostCode = customerPostcode; newAddress.CreatedBy = sessionData.UserId; orderPoco.ShipperAddressId = _addressLogic.Add(newAddress).Id; } } List <Lms_OrderAdditionalServicePoco> orderAdditionalServices = JsonConvert.DeserializeObject <List <Lms_OrderAdditionalServicePoco> >(JsonConvert.SerializeObject(orderData[1])); _orderAdditionalServiceLogic = new Lms_OrderAdditionalServiceLogic(_cache, new EntityFrameworkGenericRepository <Lms_OrderAdditionalServicePoco>(_dbContext)); if (orderPoco.Id < 1 && orderPoco.BillToCustomerId > 0) { var addedOrder = _orderLogic.Add(orderPoco); foreach (var item in orderAdditionalServices) { item.OrderId = addedOrder.Id; var existingRecord = _orderAdditionalServiceLogic.GetList().Where(c => c.OrderId == addedOrder.Id && c.AdditionalServiceId == item.AdditionalServiceId).FirstOrDefault(); if (existingRecord == null) { _orderAdditionalServiceLogic.Add(item); } else { _orderAdditionalServiceLogic.Remove(existingRecord); _orderAdditionalServiceLogic.Add(item); } } result = addedOrder.WayBillNumber; } if (result != "") { scope.Complete(); } } } } catch (Exception ex) { } return(Json(result)); }
public IActionResult Update([FromBody] dynamic orderData) { ValidateSession(); var result = ""; try { if (orderData != null) { using (var scope = new TransactionScope()) { Lms_OrderPoco orderPoco = JsonConvert.DeserializeObject <Lms_OrderPoco>(JsonConvert.SerializeObject(orderData[0])); _addressLogic = new Lms_AddressLogic(_cache, new EntityFrameworkGenericRepository <Lms_AddressPoco>(_dbContext)); var addressList = _addressLogic.GetList(); Lms_AddressPoco newAddress = new Lms_AddressPoco(); var orderAddressData = (JObject)orderData[0]; var customerId = orderAddressData.SelectToken("customerId").ToString(); var waybillNumber = orderAddressData.SelectToken("wayBillNumber").ToString(); var customerAddressId = orderAddressData.SelectToken("customerAddressId").ToString(); var customerAddressline = orderAddressData.SelectToken("customerAddressline").ToString(); var customerUnitNo = orderAddressData.SelectToken("customerUnitNo").ToString(); var customerCityId = orderAddressData.SelectToken("customerCityId").ToString(); var customerProvinceId = orderAddressData.SelectToken("customerProvinceId").ToString(); var customerPostcode = orderAddressData.SelectToken("customerPostcode").ToString(); var orderDate = orderAddressData.SelectToken("orderDate").ToString(); orderPoco.ShipperAddressId = customerAddressId == "" ? 0 : Convert.ToInt32(customerAddressId); orderPoco.ShipperCustomerId = customerId == "" ? 0 : Convert.ToInt32(customerId); orderPoco.CreateDate = orderDate == "" ? DateTime.Today : Convert.ToDateTime(orderDate); var customerAddressInfo = addressList.Where(c => c.Id == orderPoco.ShipperAddressId).FirstOrDefault(); if (customerAddressInfo != null) { customerAddressInfo.UnitNumber = !string.IsNullOrEmpty(customerAddressInfo.UnitNumber) ? Convert.ToString(customerAddressInfo.UnitNumber).Trim().ToUpper() : ""; if (customerAddressline.Trim().ToUpper() == customerAddressInfo.AddressLine.Trim().ToUpper() && customerUnitNo.Trim().ToUpper() == customerAddressInfo.UnitNumber && Convert.ToInt16(customerCityId) == customerAddressInfo.CityId) { if (Convert.ToInt16(customerProvinceId) != customerAddressInfo.ProvinceId || customerPostcode != customerAddressInfo.PostCode) { customerAddressInfo.ProvinceId = Convert.ToInt16(customerProvinceId); customerAddressInfo.PostCode = customerPostcode; _addressLogic.Update(customerAddressInfo); } } else { newAddress = new Lms_AddressPoco(); newAddress.AddressLine = customerAddressline; newAddress.UnitNumber = customerUnitNo; newAddress.CityId = Convert.ToInt16(customerCityId); newAddress.ProvinceId = Convert.ToInt16(customerProvinceId); newAddress.CountryId = 41; // default Canada, UI have to change to accept country newAddress.PostCode = customerPostcode; newAddress.CreatedBy = sessionData.UserId; orderPoco.ShipperAddressId = _addressLogic.Add(newAddress).Id; } } List <Lms_OrderAdditionalServicePoco> orderAdditionalServices = JsonConvert.DeserializeObject <List <Lms_OrderAdditionalServicePoco> >(JsonConvert.SerializeObject(orderData[1])); _orderAdditionalServiceLogic = new Lms_OrderAdditionalServiceLogic(_cache, new EntityFrameworkGenericRepository <Lms_OrderAdditionalServicePoco>(_dbContext)); if (orderPoco.Id > 0 && orderPoco.BillToCustomerId > 0) { var existingOrder = _orderLogic.GetSingleById(orderPoco.Id); if (existingOrder != null) { existingOrder.CommentsForInvoice = orderPoco.CommentsForInvoice; existingOrder.IsPrintedOnInvoice = orderPoco.IsPrintedOnInvoice; existingOrder.IsPrintedOnWayBill = orderPoco.IsPrintedOnWayBill; existingOrder.CommentsForWayBill = orderPoco.CommentsForWayBill; existingOrder.OrderBasicCost = orderPoco.OrderBasicCost; existingOrder.DiscountPercentOnOrderCost = orderPoco.DiscountPercentOnOrderCost; existingOrder.ApplicableGstPercent = orderPoco.ApplicableGstPercent; existingOrder.TotalOrderCost = orderPoco.TotalOrderCost; existingOrder.TotalAdditionalServiceCost = orderPoco.TotalAdditionalServiceCost; existingOrder.BillToCustomerId = orderPoco.BillToCustomerId; existingOrder.ReferenceNumber = orderPoco.ReferenceNumber; existingOrder.AwbCtnNumber = orderPoco.AwbCtnNumber; existingOrder.CargoCtlNumber = orderPoco.CargoCtlNumber; existingOrder.CreateDate = orderPoco.CreateDate; existingOrder.OrderedBy = orderPoco.OrderedBy; existingOrder.ContactPhoneNumber = orderPoco.ContactPhoneNumber; existingOrder.DepartmentName = orderPoco.DepartmentName; existingOrder.ShipperAddressId = orderPoco.ShipperAddressId; existingOrder.ShipperCustomerId = orderPoco.ShipperCustomerId; existingOrder.ServiceProviderEmployeeId = orderPoco.ServiceProviderEmployeeId; existingOrder.UnitTypeId = orderPoco.UnitTypeId; existingOrder.UnitQuantity = orderPoco.UnitQuantity; existingOrder.SkidQuantity = orderPoco.SkidQuantity; existingOrder.TotalPiece = orderPoco.TotalPiece; existingOrder.WeightScaleId = orderPoco.WeightScaleId; existingOrder.WeightTotal = orderPoco.WeightTotal; existingOrder.CityId = orderPoco.CityId; var orderServices = _orderAdditionalServiceLogic.GetList().Where(c => c.OrderId == existingOrder.Id).ToList(); if (orderServices.Count > 0) { foreach (var item in orderServices) { _orderAdditionalServiceLogic.Remove(item); } } if (orderAdditionalServices.Count > 0) { foreach (var item in orderAdditionalServices) { if (item.AdditionalServiceId > 0) { item.OrderId = existingOrder.Id; _orderAdditionalServiceLogic.Add(item); } } } var updatedOrder = _orderLogic.Update(existingOrder); result = updatedOrder.WayBillNumber; } } if (result != "") { scope.Complete(); } } } } catch (Exception ex) { } return(Json(result)); }