Exemplo n.º 1
0
		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 }));
        }
Exemplo n.º 3
0
		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);
        }
Exemplo n.º 4
0
		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));
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
		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;
		}
Exemplo n.º 11
0
        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);
                }
            }
        }
Exemplo n.º 12
0
        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()));
            }
        }
Exemplo n.º 13
0
        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"));
            }
        }
Exemplo n.º 14
0
		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;
		}
Exemplo n.º 15
0
		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"));
            }
        }
Exemplo n.º 18
0
		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;
		}
Exemplo n.º 19
0
        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"));
            }
        }
Exemplo n.º 20
0
        /// <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");
                }
            }
        }