/// <summary> /// 运费查询 /// </summary> /// <param name="skuNumList">商品ID数量集合</param> /// <param name="province">省份</param> /// <param name="city">城市</param> /// <param name="county">县区</param> /// <param name="town">城镇</param> /// <param name="paymentType">支付方式</param> /// <returns></returns> public JDValueResult <ResponseFreight> QueryProductFreight(List <SkuNum> skuNumList, int province, int city, int county, int town, PaymentType paymentType) { if (skuNumList == null || skuNumList.Count == 0 || skuNumList.Count > 50) { return new JDValueResult <ResponseFreight>() { success = false, resultCode = JDErrorCode.sys_param_json_error.ToString() } } ; var requestModel = new RequestFreight() { province = province, city = city, county = county, town = town, paymentType = paymentType, sku = skuNumList }; return(JDRequestHelper <ResponseFreight> .GetResult("biz.order.freight.get", requestModel.ToJson())); }
// // GET: /Freight/Create public ActionResult Create(int?id) { var model = new RequestFreight(); model.RequestFreightCargoes.Add(new RequestFreightCargo()); if (id != null) { model = _db.Requests.Single(rf => rf.RequestId == id).RequestFreight; model.RequestId = 0; model.Request.RequestEvents = null; model.Request.RequestAttachments = null; model.RequestFreightCargoes = model.Request.RequestFreightCargoes.ToList(); model.RequestFreightCargoes.ToList().ForEach(x => { x.CargoId = 0; x.RequestId = 0; }); } return(View(model)); }
public ActionResult Edit(RequestFreight rf, IEnumerable <HttpPostedFileBase> files, int[] oldFiles) { try { var model = _db.RequestFreights.Single(m => m.RequestId == rf.RequestId); if (model.Request.SpecTransReceived != null && model.Request.SpecTransReceived.Value) { ViewBag.BackController = "Home"; return(View("Sended")); } var respCargoes = rf.RequestFreightCargoes; model.DestinationPoint = rf.DestinationPoint; model.ChangesInfo = rf.ChangesInfo; model.Consignee = rf.Consignee; model.ConsigneeContactName = rf.ConsigneeContactName; model.DeliveryTime = rf.DeliveryTime; model.LoadingTime = rf.LoadingTime; model.LocationInfo = rf.LocationInfo; model.MobileConnection = rf.MobileConnection; model.Request.OtherInformation = rf.Request.OtherInformation; model.Shipper = rf.Shipper; model.VehicleCapacityTonns = rf.VehicleCapacityTonns; model.VehicleCount = rf.VehicleCount; model.WithInvoice = rf.WithInvoice; model.OrderNumber = rf.OrderNumber; model.LoadingType = rf.LoadingType; model.LoadingAddress = rf.LoadingAddress; model.ContactName = rf.ContactName; model.Responsible = rf.Responsible; model.Request.RequestDate = rf.Request.RequestDate; model.Request.ApproverEmployeeId = rf.Request.ApproverEmployeeId; model.VehicleType = rf.VehicleType; model.Request.DepartmentGroupId = rf.Request.DepartmentGroupId; model.Request.DirectionId = rf.Request.DirectionId; model.Request.AgreementPurposeId = rf.Request.AgreementPurposeId; var customer = _db.v_RequestCustomers.FirstOrDefault( x => x.DirectionId == rf.Request.DirectionId && x.PurposeId == rf.Request.AgreementPurposeId); if (customer == null) { ViewBag.ErrorMessage = "Не найден заказчик по направлению и цели перевозки. Возможно не выбрана цель и направление перевозки"; return(View(rf)); } model.Request.CustomerId = customer.CustomerId; if (rf.Request.RequestTypeId == 0) { rf.Request.RequestTypeId = null; } model.Request.RequestTypeId = rf.Request.RequestTypeId; if (model.Request.Status == 3 && User.Identity.Name.ToLower() == model.Request.UserLogin.ToLower()) { model.Request.Status = 0; RequestEvent re = new RequestEvent(); re.Status = 0; re.Message = String.Empty; re.EventDate = DateTime.Now; model.Request.RequestEvents.Add(re); } var modelCargoes = model.RequestFreightCargoes; foreach (var modelCargo in modelCargoes) { //Существует ли такой груз в респонсе bool cargoExistInResponse = false; foreach (var respCargo in respCargoes) { //Если обновление груза if (respCargo.CargoId == modelCargo.CargoId) { modelCargo.CargoName = respCargo.CargoName; modelCargo.Weight = respCargo.Weight; modelCargo.Length = respCargo.Length; modelCargo.Height = respCargo.Height; modelCargo.Width = respCargo.Width; modelCargo.Volume = respCargo.Volume; modelCargo.KindOfPacking = respCargo.KindOfPacking; modelCargo.NumberOfPackages = respCargo.NumberOfPackages; modelCargo.SpecialProperties = respCargo.SpecialProperties; modelCargo.Cost = respCargo.Cost; cargoExistInResponse = true; } } if (cargoExistInResponse == false) { modelCargo.IsDeleted = true; } } //Добавляем все новые грузы, т.е те, у которых CargoId == 0 foreach (var respCargo in respCargoes) { if (respCargo.CargoId == 0) { modelCargoes.Add(respCargo); } } //Удаляем файлы, которые пользователь отметил как удаленные var attForRemoving = new List <RequestAttachment>(); if (oldFiles != null) //Если остался хоть один старый файл { attForRemoving = model.Request.RequestAttachments.Where(a => !oldFiles.Contains(a.Id)).ToList(); } else //Если пользователь удаляет все файлы { attForRemoving = model.Request.RequestAttachments.Where(a => (a.IsDeleted == false || a.IsDeleted == null)) .ToList(); } foreach (var att in attForRemoving) { att.IsDeleted = true; } //Добавляем новые файлы if (files != null) { foreach (var file in files) { if (file != null) { RequestAttachment attFile = new RequestAttachment(); attFile.Name = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1); int fl = file.ContentLength; byte[] fc = new byte[fl]; file.InputStream.Read(fc, 0, fl); attFile.Cont = fc; attFile.IsDeleted = false; model.Request.RequestAttachments.Add(attFile); } } } _db.SaveChanges(); return(RedirectToAction("Index", "Home")); } catch { ViewBag.ErrMessage = "Ошибка при редактировании записи"; ViewBag.BackController = "Freight"; return(View("Error")); } }
public ActionResult Create(RequestFreight rf, IEnumerable <HttpPostedFileBase> files) { if (rf.Request.ApproverEmployeeId == 0) { ViewBag.ErrorMessage = "Веберите руководителя, который подпишет заявку!"; return(View(rf)); } if ((rf.Request.DepartmentGroupId ?? 0) == 0) { ViewBag.ErrorMessage = "Веберите структурное подразделение!"; return(View(rf)); } if ((rf.Request.DirectionId ?? 0) == 0) { ViewBag.ErrorMessage = "Веберите направление перевозки!"; return(View(rf)); } if ((rf.Request.AgreementPurposeId ?? 0) == 0) { ViewBag.ErrorMessage = "Веберите цель перевозки!"; return(View(rf)); } try { rf.Request.Status = 0; rf.Request.UserLogin = User.Identity.Name; rf.Request.UserFio = AccountManager.GetUserDisplayName(User.Identity.Name); rf.Request.PublishDate = DateTime.Now; rf.Request.IsDeleted = false; var customer = _db.v_RequestCustomers.FirstOrDefault( x => x.DirectionId == rf.Request.DirectionId && x.PurposeId == rf.Request.AgreementPurposeId); if (customer == null) { ViewBag.ErrorMessage = "Не найден заказчик по направлению и цели перевозки."; return(View(rf)); } rf.Request.CustomerId = customer.CustomerId; if (rf.Request.RequestTypeId == 0) { rf.Request.RequestTypeId = null; } if (Utils.AccountManager.IsApprover(User.Identity.Name).Item2) { rf.Request.SendToSpecTrans = true; rf.Request.Status = 1; rf.Request.ApproveDate = DateTime.Now; rf.Request.ApproverLogin = User.Identity.Name; rf.Request.ApproverFio = Utils.AccountManager.GetUserDisplayName(User.Identity.Name); RequestEvent re = new RequestEvent(); re.Status = 1; re.EventDate = DateTime.Now; rf.Request.RequestEvents.Add(re); } //Файлы if (files != null) { foreach (var file in files) { if (file != null) { RequestAttachment attFile = new RequestAttachment(); attFile.Name = file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1); int fl = file.ContentLength; byte[] fc = new byte[fl]; file.InputStream.Read(fc, 0, fl); attFile.Cont = fc; rf.Request.RequestAttachments.Add(attFile); } } } _db.RequestFreights.Add(rf); _db.SaveChanges(); return(View("Published", rf.Request.RequestId)); } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); //TODO: Попытка удалить запись, у которой ExpDate истек } } ViewBag.ErrMessage = "Ошибка при создании записи"; ViewBag.BackController = "Home"; return(View("Error")); } }