static Attachment CreateBaseAttachment(RequestAttachment attachmentIn, string filename) { if (null == attachmentIn) throw new ArgumentNullException("attachmentIn"); Attachment attachmentOut = new Attachment(new FCS.Lite.Interface.File(attachmentIn.FileName, attachmentIn.Name), attachmentIn.ContentType, attachmentIn.ContentId, attachmentIn.ContentItemIndex.ToString(CultureInfo.InvariantCulture), false); // We need to add all its child attachments as well (it could be a zip, or a zip in a zip in a etc) foreach (var file in attachmentIn.File.Files) { PopulateChildFiles(attachmentOut.File, file); } List<CustomProperty> props = new List<CustomProperty>(); if (!string.IsNullOrEmpty(filename)) { props.Add(new CustomProperty(ContentItemAdaptor.ContentDataSourceKey, filename)); } foreach (string key in attachmentIn.Properties.Keys) { props.Add(new CustomProperty(key, attachmentIn.Properties[key])); } attachmentOut.Properties = props.ToArray(); attachmentOut.IsSignature = attachmentIn.IsSignature; return attachmentOut; }
public async Task <ActionResult> DeleteConfirmed(int id) { RequestAttachment requestAttachment = await db.RequestAttachments.FindAsync(id); db.RequestAttachments.Remove(requestAttachment); await db.SaveChangesAsync(); return(RedirectToAction("Details", "Request", new { id = requestAttachment.RequestID })); }
internal static void AddFileToUro(IUniversalRequestObject uro, TempFile tempFile) { RequestAttachment requestAttachment = new RequestAttachment(); requestAttachment.FileName = tempFile.FullPath; requestAttachment.Name = Path.GetFileName(tempFile.FullPath); requestAttachment.File = new Workshare.FCS.Lite.Interface.File(tempFile.FullPath, Path.GetFileNameWithoutExtension(tempFile.FullPath)); requestAttachment.ContentType = RequestObjectContentType.DOC; uro.Attachments.Add(requestAttachment); }
public void AddFileAttachment(IContainer container) { RequestAttachment requestAttachment = new RequestAttachment(); using (Stream str = container.Contents) { requestAttachment.Data = new OptimizedBinaryData(str); } requestAttachment.Name = container.DisplayName; requestAttachment.ContentType = RequestObjectContentType.DOC; m_uro.Attachments.Add(requestAttachment); }
public async Task <ActionResult> Edit([Bind(Include = "ID,RequestID,AttachmentID,Action")] RequestAttachment requestAttachment) { if (ModelState.IsValid) { db.Entry(requestAttachment).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } ViewBag.AttachmentID = new SelectList(db.Attachments, "ID", "Name", requestAttachment.AttachmentID); ViewBag.RequestID = new SelectList(db.Requests, "ID", "RequestNumber", requestAttachment.RequestID); return(View(requestAttachment)); }
// GET: RequestAttachment/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RequestAttachment requestAttachment = await db.RequestAttachments.FindAsync(id); if (requestAttachment == null) { return(HttpNotFound()); } return(View(requestAttachment)); }
public async Task <ActionResult> Create([Bind(Include = "RequestID,AttachmentID,Action")] RequestAttachment requestAttachment) { if (ModelState.IsValid) { db.RequestAttachments.Add(requestAttachment); await db.SaveChangesAsync(); return(RedirectToAction("Details", "Request", new { id = requestAttachment.RequestID })); } ViewBag.AttachmentID = new SelectList(db.Attachments, "ID", "Name", requestAttachment.AttachmentID); ViewBag.RequestID = new SelectList(db.Requests, "ID", "RequestNumber", requestAttachment.RequestID); return(View(requestAttachment)); }
// GET: RequestAttachment/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RequestAttachment requestAttachment = await db.RequestAttachments.FindAsync(id); if (requestAttachment == null) { return(HttpNotFound()); } ViewBag.AttachmentID = new SelectList(db.Attachments, "ID", "Name", requestAttachment.AttachmentID); ViewBag.RequestID = new SelectList(db.Requests, "ID", "RequestNumber", requestAttachment.RequestID); return(View(requestAttachment)); }
private static async Task AddRequestAttachment(this AppDbContext db, IFormFile file, User user, int requestId) { var uploadUrl = $@"{uploadBase}{user.Guid.ToString()}\"; var upload = await file.WriteFile(uploadUrl); var attachment = new RequestAttachment { Name = upload.Name, File = upload.File, Url = upload.Url, Path = upload.Path, RequestId = requestId, DateUploaded = DateTime.Now, UserId = user.Id, IsDeleted = false }; await db.Attachments.AddAsync(attachment); await db.SaveChangesAsync(); }
internal static RequestAttachment GetRequestAttachment(Attachment attachment) { if (null == attachment) throw new ArgumentNullException("attachment"); RequestAttachment ra = new RequestAttachment { ContentId = attachment.Id, ContentItemIndex = Int32.Parse(attachment.Index, CultureInfo.InvariantCulture), ContentType = attachment.ContentType, File = attachment.File is Engine.File ? attachment.File : new Engine.File(attachment.File), FileName = attachment.FileName, Name = attachment.Name, IsSignature = attachment.IsSignature }; if (null != attachment.Properties) { foreach (CustomProperty prop in attachment.Properties) { ra.Properties[prop.Name] = prop.Value; } } //When a null content byte array is passed, go to disk. if (ra.Properties.ContainsKey(ContentItemAdaptor.ContentDataSourceKey)) { if (!File.Exists(ra.Properties[ContentItemAdaptor.ContentDataSourceKey])) { throw new ArgumentException( @"When passing an attachment with null content you must pass the 'ContentDataSource' property of the attachment, which should point to a valid file on disk."); } ra.FileName = ra.Properties[ContentItemAdaptor.ContentDataSourceKey]; } return ra; }
public void AddAttachment(int requestId, string fileName, Stream stream, string username) { Request request = this.requestRepository.Get(requestId); if (request != null) { if (stream != null) { AdminUser user = this.userTasks.GetAdminUser(username); // create Attachment object Attachment att = new Attachment(); MemoryStream ms = new MemoryStream((int)stream.Length); stream.CopyTo(ms); att.FileData = ms.ToArray(); att.FileName = fileName; att.FileExtension = FileUtil.GetExtension(fileName); att.UploadedDateTime = DateTime.Now; att.UploadedByAdminUser = user; att = this.attachmentRepository.Save(att); // attach to Request RequestAttachment ra = new RequestAttachment(); ra.Request = request; ra.Attachment = att; ra = this.requestAttachmentRepository.Save(ra); // create History object RequestAttachmentHistory rah = new RequestAttachmentHistory(); rah.AdminUser = user; rah.DateStatusReached = DateTime.Now; rah.RequestAttachmentStatus = this.requestAttachmentStatusRepository.Get(RequestAttachmentStatus.ADDED); rah.RequestAttachment = ra; this.requestAttachmentHistoryRepository.Save(rah); } } }
public ServiceCallResult <AddRequestViewModel> AddRequestAttachment() { if (Request.Form.Files.Count() > 0) { try { foreach (var file in Request.Form.Files) { RequestAttachment fileAttachment = new RequestAttachment(); var memoryStream = new MemoryStream(); file.CopyTo(memoryStream); fileAttachment.Attachment = memoryStream.ToArray(); fileAttachment.FileName = file.FileName; fileAttachment.RequestId = int.Parse(Request.Form["id"].ToString()); _wtContext.RequestAttachments.Add(fileAttachment); } _wtContext.SaveChanges(); Request ret = _wtContext.Requests .Where(x => x.Id == int.Parse(Request.Form["id"].ToString())) .Include(x => x.OwningStream) .FirstOrDefault(); var vm = Mappers <Request, AddRequestViewModel> .MapToViewModel(ret); return(ServiceCallResult <AddRequestViewModel> .CreateSuccessResult(String.Format(UserMessageResource.FieldAddedSuccessfully, FieldNamesResource.Request), vm)); } catch (Exception ex) { return(ServiceCallResult <AddRequestViewModel> .CreateErrorResult(String.Format(UserMessageResource.ErrorAddingField, FieldNamesResource.Request) + ex.Message, new AddRequestViewModel())); } } else { return(ServiceCallResult <AddRequestViewModel> .CreateErrorResult(String.Format(UserMessageResource.ErrorSavingInputInvalid, FieldNamesResource.Request, FieldNamesResource.Fields), new AddRequestViewModel())); } }
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")); } }
internal static Attachment GetAttachmentAsFile(RequestAttachment attachmentIn) { string tempFile = Path.GetTempFileName(); Attachment newAttachment = CreateBaseAttachment(attachmentIn, tempFile); using (FileStream output = new FileStream(tempFile, FileMode.Open, FileAccess.ReadWrite)) using (Stream str = attachmentIn.Data.AsStream()) { StreamUtils.CopyStreamToStream(str, output); output.Close(); } return newAttachment; }
internal static Attachment GetAttachment(RequestAttachment attachmentIn) { return CreateBaseAttachment(attachmentIn, null); }
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")); } }
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")); } }
private static RequestAttachment AddAttachment(UniversalRequestObject uroOut, IContainer container) { IFile file = container as IFile; if (null == file) return null; RequestAttachment ra = new RequestAttachment(); ra.Name = file.DisplayName; ra.FileName = file.FileName; ra.ContentType = file.FileType.ToString(); if (file is File) { ra.Data = (file as File).RawContents; ra.ContentId = (file as File).ContentId; ra.ContentItemIndex = (file as File).ContentItemIndex; ra.File = file as File; foreach (string key in (file as File).Properties.Keys) { ra.Properties[key] = (file as File).Properties[key]; } } else { using (Stream str = file.Contents) { ra.Data = new OptimizedBinaryData(str); } } uroOut.Attachments.Add(ra); return ra; }
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")); } }
/// <summary> /// Directly start the download for any given attachment. Calling this request will immediatly end the current request (if the file is found) /// </summary> /// <param name="request">The file (from the attachment) to send to the user</param> /// <returns>Directly ends the current request and sends the file to the user. Otherwise a string is returned with the error.</returns> public static string Download(RequestAttachment request) { if (request == null) { // Invalid request (empty). Inform the user return("Invalid request"); } retry: try { // Voeg de datumrange toe string attachments = Sql.ExecuteSql(Constants.SQL_QUERY_GET_ATTACHMENT, CommandType.Text, new { id = request.logMailid }); if (!String.IsNullOrEmpty(attachments)) { var data = attachments.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (data != null && data.Length > request.order) { string attachment = data[request.order]; // Is het toevallig een Umbraco Media Node Id? int tmp; if (attachment.All(c => Char.IsDigit(c))) { if (int.TryParse(attachment, out tmp)) { // Ah, dat is makkelijk, gewoon het bestand uit Umbraco vissen attachment = Helper.GetUmbracoMediaFile(tmp, true); } } if (!String.IsNullOrEmpty(attachment)) { // Stream the file directly to browser (we do not want to expose any download URL) Helper.StreamFileToBrowser(attachment); } } } // Attachment not found in the database. Report the problem to the client. return("Could not find the attachment"); } catch (FileNotFoundException) { // File not found :( Report the problem to the client. return("The saved file for this attachment does not exist"); } catch (DbException ex) { // Database exception. Try and handle the exception if (Helper.HandleSqlException(ex)) { // Try again goto retry; } else { // The problem could not be solved. Report the problem to the client. return("Internal database error while retrieving the attachment"); } } }