// // GET: /Freight/Create public ActionResult Create(int?id) { var model = new RequestInternational(); if (id != null) { model = _db.Requests.Single(rf => rf.RequestId == id).RequestInternational; model.RequestId = 0; model.Request.RequestEvents = null; model.Request.RequestAttachments = null; } try { if (model.Request == null) { model.Request = new Request(); } var login = User.Identity.Name; var fio = AccountManager.GetUserDisplayName(login); var phone = AccountManager.GetUserPhoneNumber(login); model.Request.Responsible = String.Format("{0}, тел.{1}", fio, phone); } catch (Exception ex) { model.Request.Responsible = ex.Message; } return(View(model)); }
public ActionResult Edit(RequestInternational rf, IEnumerable <HttpPostedFileBase> files, int[] oldFiles) { try { var model = _db.RequestInternationals.Single(m => m.RequestId == rf.RequestId); model.Brutto = rf.Brutto; model.CargoVolume = rf.CargoVolume; model.Netto = rf.Netto; model.Way = rf.Way; model.CargoCost = rf.CargoCost; model.CargoDimensions = rf.CargoDimensions; model.CargoName = rf.CargoName; model.CargoOverloading = rf.CargoOverloading; model.CargoStackability = rf.CargoStackability; model.Consignor = rf.Consignor; model.Code = rf.Code; model.UnloadingContactName = rf.UnloadingContactName; model.DangerCargo = rf.DangerCargo; model.DeliveryAddress = rf.DeliveryAddress; model.DeliveryBasis = rf.DeliveryBasis; model.DeliveryDate = rf.DeliveryDate; model.DepartureCustoms = rf.DepartureCustoms; model.LoadingContactName = rf.LoadingContactName; model.LoadingType = rf.LoadingType; model.PackageListNumber = rf.PackageListNumber; model.ReturnCustoms = rf.ReturnCustoms; model.Request.OtherInformation = rf.Request.OtherInformation; model.VehicleCount = rf.VehicleCount; model.Request.RequestDate = rf.Request.RequestDate; model.Request.ApproverEmployeeId = rf.Request.ApproverEmployeeId; model.VehicleCapacityTonns = rf.VehicleCapacityTonns; model.VehicleType = rf.VehicleType; model.VehicleCount = rf.VehicleCount; model.Request.Responsible = rf.Request.Responsible; model.Currency = rf.Currency; model.DeliveryDateEnd = rf.DeliveryDateEnd; model.RequestDateEnd = rf.RequestDateEnd; model.CargoPlaces = rf.CargoPlaces; if (rf.Request.CustomerId == 0) { rf.Request.CustomerId = null; } model.Request.CustomerId = rf.Request.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; var re = new RequestEvent { Status = 0, Message = String.Empty, EventDate = DateTime.Now }; model.Request.RequestEvents.Add(re); } //Удаляем файлы, которые пользователь отметил как удаленные 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) { var attFile = new RequestAttachment { 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(RequestInternational 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)); } var Way = "Внутри Республики Беларусь"; if (rf.Way == Way) { rf.DepartureCustoms = ""; rf.ReturnCustoms = ""; rf.Code = ""; } else { rf.Request.AgreementPurposeId = null; } if (rf.Way == Way && (rf.Request.AgreementPurposeId ?? 0) == 0) { ViewBag.ErrorMessage = "Веберите цель перевозки!"; return(View(rf)); } if (rf.Way != Way && String.IsNullOrEmpty(rf.DepartureCustoms)) { ViewBag.ErrorMessage = "Таможня отправления обязательно для заполнения"; return(View(rf)); } if (rf.Way != Way && String.IsNullOrEmpty(rf.ReturnCustoms)) { ViewBag.ErrorMessage = "Таможня назначения обязательно для заполнения"; return(View(rf)); } if (rf.Way != Way && String.IsNullOrEmpty(rf.PackageListNumber)) { ViewBag.ErrorMessage = "№ упаковочного листа обязательно для заполнения"; return(View(rf)); } if (rf.Way != Way && String.IsNullOrEmpty(rf.Code)) { 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; if (rf.Request.CustomerId == 0) { rf.Request.CustomerId = null; } if (rf.Request.RequestTypeId == 0) { rf.Request.RequestTypeId = null; } var isApproved = false; if (Utils.AccountManager.IsApprover(User.Identity.Name).Item2) { isApproved = true; rf.Request.Status = 1; rf.Request.ApproveDate = DateTime.Now; rf.Request.ApproverLogin = User.Identity.Name; rf.Request.ApproverFio = AccountManager.GetUserDisplayName(User.Identity.Name); rf.Request.RequestEvents.Add(new RequestEvent { Status = 1, EventDate = DateTime.Now }); } //Файлы 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); } } } // throw new Exception("Debug"); _db.RequestInternationals.Add(rf); _db.SaveChanges(); if (isApproved) { //var tel = AccountManager.GetUserPhoneNumber(rf.Request.UserLogin); new EmailSender().Send(rf.RequestId, rf.Request.Responsible, "", rf.Way); } 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 истек } } throw (dbEx); ViewBag.ErrMessage = "Ошибка при создании записи:"; ViewBag.BackController = "Home"; return(View("Error")); } }