Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }