示例#1
0
        public async Task Test_AddOrUpdateAsync_GetByIdAsync()
        {
            var id     = Guid.NewGuid().ToString("N");
            var userId = Guid.NewGuid();
            var dto    = new AttachmentItem
            {
                ContextId = Guid.Empty,
                Id        = id,
                Location  = $"attachments/2018/12/28/{id}.ext",
                Size      = 100,
                Status    = UploadStatus.Uploading,
                Uploaded  = DateTimeOffset.UtcNow,
                UploadBy  = userId
            };
            var target = new AttachmentAppService(statefulServiceContext, stateManager);
            await target.AddOrUpdateAsync(dto);

            var result = await target.GetByIdAsync(id);

            result.Location.Should().Be(dto.Location);
            result.Status.Should().Be(dto.Status);

            dto.Status = UploadStatus.Uploaded;
            await target.AddOrUpdateAsync(dto);

            result = await target.GetByIdAsync(id);

            result.Status.Should().Be(UploadStatus.Uploaded);
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public AttachmentItem SaveOrUpdate(AttachmentItem item)
        {
            if (item == null)
            {
                return(null);
            }

            AttachmentItem attachmentItem = null;

            if (item.Id > 0)
            {
                bool isUpdate = FILE_REPOSITORY.UpdateExecute(item);
                if (isUpdate)
                {
                    attachmentItem = item;
                }
            }
            else
            {
                int id = FILE_REPOSITORY.AddExecute(item);

                attachmentItem = FILE_REPOSITORY.GetItemById(id);
            }

            return(attachmentItem);
        }
        public async Task TestDownloadFileAsync()
        {
            var md5      = Guid.NewGuid().ToString("N");
            var formFile = Substitute.For <IFormFile>();

            var appService = Substitute.For <IAttachmentAppService>();

            IAttachmentAppService factory(string id) => appService;

            var storeService = Substitute.For <IAttachmentStoreService>();

            var target = new AttachmentController(factory, storeService,
                                                  Substitute.For <IMemoryCache>());

            target.ControllerContext = CreateMockContext();

            var result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            appService.GetByIdAsync(md5)
            .Returns(new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploading,
                Location = null
            });
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            appService.GetByIdAsync(md5)
            .Returns(new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploaded,
                Location = null
            });
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            var dto = new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploaded,
                Location = "abc.ext"
            };

            appService.GetByIdAsync(md5)
            .Returns(dto);
            storeService.FillMemoryStreamAsync(dto, Arg.Any <MemoryStream>())
            .Returns(Task.CompletedTask);
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <FileStreamResult>();

            await storeService.Received().FillMemoryStreamAsync(dto, Arg.Any <MemoryStream>());
        }
示例#4
0
        public IHttpActionResult GetAttachments(PagedResults pagedResults)
        {
            var userId     = BoardContext.Current.PageUserID;
            var pageSize   = pagedResults.PageSize;
            var pageNumber = pagedResults.PageNumber;

            var attachments = this.GetRepository <Attachment>().GetPaged(
                a => a.UserID == userId,
                pageNumber,
                pageSize);

            var attachmentItems = new List <AttachmentItem>();

            attachments.ForEach(
                attach =>
            {
                var url =
                    $"{BoardInfo.ForumClientFileRoot}resource.ashx?i={attach.ID}&b={BoardContext.Current.PageBoardID}&editor=true";

                var description = $"{attach.FileName} ({attach.Bytes / 1024} kb)";

                var iconImage = attach.FileName.IsImageName()
                                            ? $@"<img src=""{url}"" alt=""{description}"" title=""{description}"" />"
                                            : "<i class=\"far fa-file-alt attachment-icon\"></i>";

                var attachment = new AttachmentItem
                {
                    FileName  = attach.FileName,
                    OnClick   = $"CKEDITOR.tools.insertAttachment('{attach.ID}')",
                    IconImage = $@"{iconImage}<span>{description}</span>"
                };

                if (attach.FileName.IsImageName())
                {
                    attachment.DataURL = url;
                }

                attachmentItems.Add(attachment);
            });

            return(this.Ok(
                       new GridDataSet
            {
                PageNumber = pageNumber,
                TotalRecords =
                    attachments.Any()
                                ? this.GetRepository <Attachment>().Count(a => a.UserID == userId)
                    .ToType <int>()
                                : 0,
                PageSize = pageSize,
                AttachmentList = attachmentItems
            }));
        }
示例#5
0
        public void GetInfo_ReturnValidValue_ReturnOk()
        {
            //arrange
            var resultModel = new AttachmentItem();

            attachmentBusiness.Setup((x) => x.GetAttachmentItem(It.IsAny <AttachmentItemKeyModel>())).Returns(resultModel);
            attachmentController.Setup((x) => x.Ok(resultModel));
            //act
            var result = attachmentController.Object.GetInfo(null);

            //assert
            attachmentController.Verify(x => x.Ok(resultModel));
        }
示例#6
0
        private void addPhotoToAttachments([NotNull] Photo photo)
        {
            if (photo == null)
            {
                throw new ArgumentNullException(nameof(photo));
            }

            logger.Debug($"Запрос на добавление фотографии к аттачментам {photo.Id}. Источник - {photo.GetLargest()}");
            var attachment = new AttachmentItem();

            attachment.SetAsPhotoAttachment(photo);
            Attachments.Add(attachment);
            attachment.RemoveRequested += onAttachmentRemoveRequest;
        }
示例#7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="itemId"></param>
        /// <param name="isIncludeChildren"></param>
        /// <returns></returns>
        public AttachmentItem GetAttachmentItem(int itemId, bool isIncludeChildren = false)
        {
            if (itemId <= 0)
            {
                return(null);
            }

            AttachmentItem item = FILE_REPOSITORY.GetItemById(itemId);

            if (isIncludeChildren)
            {
                item.Content = FILE_REPOSITORY.GetContentByItemId(itemId);
            }

            return(item);
        }
        private AttachmentItem PackageImage(MemoryStream memoryStream, RegistrationModel model)
        {
            AttachmentItem item = new AttachmentItem();
            MemoryStream   m    = new MemoryStream();

            m.Seek(0, SeekOrigin.Begin);
            memoryStream.Seek(0, SeekOrigin.Begin);
            memoryStream.CopyTo(m);
            m.Seek(0, SeekOrigin.Begin);
            memoryStream.Seek(0, SeekOrigin.Begin);
            item.Content  = m;
            item.MimeType = DriveApiService.GetMimeType(Path.GetExtension(model.FileName));
            item.Name     = model.FileName;

            return(item);
        }
        private AttachmentItem PackageImage(MemoryStream memoryStream, string orgfilename)
        {
            AttachmentItem item = new AttachmentItem();
            MemoryStream   m    = new MemoryStream();

            m.Seek(0, SeekOrigin.Begin);
            memoryStream.Seek(0, SeekOrigin.Begin);
            memoryStream.CopyTo(m);
            m.Seek(0, SeekOrigin.Begin);
            memoryStream.Seek(0, SeekOrigin.Begin);
            item.Content  = m;
            item.MimeType = DriveApiService.GetMimeType(Path.GetExtension(orgfilename));
            item.Name     = orgfilename;

            return(item);
        }
示例#10
0
        public async Task AddOrUpdateAsync(AttachmentItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            if (string.IsNullOrEmpty(item.Id))
            {
                throw new ArgumentNullException(nameof(item.Id));
            }

            if (item.Size < 0)
            {
                throw new ArgumentNullException(nameof(item.Size));
            }

            if (string.IsNullOrEmpty(item.Location))
            {
                throw new ArgumentNullException(nameof(item.Location));
            }

            var(dictList, dictIndexContextId) = await GetDicts();

            using (var tx = StateManager.CreateTransaction())
            {
                await dictList.SetAsync(tx, item.Id, item);

                HashSet <string> contextMapping;
                var contextMappingWrap = await dictIndexContextId.TryGetValueAsync(tx, item.ContextId);

                if (contextMappingWrap.HasValue)
                {
                    contextMapping = contextMappingWrap.Value;
                }
                else
                {
                    contextMapping = new HashSet <string>();
                }
                if (contextMapping.Add(item.Id))
                {
                    await dictIndexContextId.SetAsync(tx, item.ContextId, contextMapping);
                }

                await tx.CommitAsync();
            }
        }
示例#11
0
        // Create upload session
        private static UploadSession CreateUploadSession(Microsoft.Graph.Message message, string attachmentName, long attachmentSize)
        {
            var mailboxHelper = new MailboxHelper(_graphServiceClient);

            var attachmentItem = new AttachmentItem()
            {
                AttachmentType = AttachmentType.File,
                Name           = attachmentName,
                Size           = attachmentSize
            };

            var uploadSession = mailboxHelper.CreateUploadSession(message, userId, attachmentItem).Result;

            Console.WriteLine("Upload URL: " + uploadSession.UploadUrl);

            return(uploadSession);
        }
示例#12
0
        public IHttpActionResult GetAlbumImages(PagedResults pagedResults)
        {
            var userId     = BoardContext.Current.PageUserID;
            var pageSize   = pagedResults.PageSize;
            var pageNumber = pagedResults.PageNumber;

            var albumImages = this.GetRepository <UserAlbumImage>().GetUserAlbumImagesPaged(
                userId,
                pageNumber,
                pageSize);

            var images = new List <AttachmentItem>();

            albumImages.ForEach(
                image =>
            {
                var url = $"{BoardInfo.ForumClientFileRoot}resource.ashx?imgprv={image.ID}";

                var attachment = new AttachmentItem
                {
                    FileName  = image.FileName,
                    OnClick   = $"CKEDITOR.tools.insertAlbumImage('{image.ID}')",
                    IconImage =
                        $@"<img class=""popupitemIcon"" src=""{url}"" alt=""{(image.Caption.IsSet() ? image.Caption : image.FileName)}"" title=""{(image.Caption.IsSet() ? image.Caption : image.FileName)}"" class=""img-fluid img-thumbnail me-1"" />",
                    DataURL = url
                };

                images.Add(attachment);
            });

            return(this.Ok(
                       new GridDataSet
            {
                PageNumber = pageNumber,
                TotalRecords =
                    albumImages.Any()
                                ? this.GetRepository <UserAlbumImage>().GetUserAlbumImageCount(userId)
                                : 0,
                PageSize = pageSize,
                AttachmentList = images
            }));
        }
示例#13
0
        public IHttpActionResult GetAlbumImages(PagedResults pagedResults)
        {
            var userId     = pagedResults.UserId;
            var pageSize   = pagedResults.PageSize;
            var pageNumber = pagedResults.PageNumber;

            var albumImages = this.GetRepository <UserAlbumImage>().GetUserAlbumImagesPaged(
                userId,
                pageNumber,
                pageSize);

            var images = new List <AttachmentItem>();

            albumImages.ForEach(
                image =>
            {
                var url = $"{YafForumInfo.ForumClientFileRoot}resource.ashx?imgprv={image.ID}";

                var attachment = new AttachmentItem
                {
                    FileName  = image.FileName,
                    OnClick   = $"setStyle('AlbumImgId', '{image.ID}')",
                    IconImage =
                        $@"<img class=""popupitemIcon"" src=""{url}"" alt=""{(image.Caption.IsSet() ? image.Caption : image.FileName)}"" title=""{(image.Caption.IsSet() ? image.Caption : image.FileName)}"" width=""40"" height=""40"" />",
                    DataURL = url
                };

                images.Add(attachment);
            });

            return(this.Ok(
                       new GridDataSet
            {
                PageNumber = pageNumber,
                TotalRecords =
                    albumImages.Any()
                                ? this.GetRepository <UserAlbumImage>().GetUserAlbumImageCount(userId)
                                : 0,
                PageSize = pageSize,
                AttachmentList = images
            }));
        }
示例#14
0
        private List <AttachmentItem> PackageImages(List <StateTaxRegistrationInternal> internalregs)
        {
            List <AttachmentItem> items = new List <AttachmentItem>();

            foreach (StateTaxRegistrationInternal inreg in internalregs)
            {
                AttachmentItem aitem = new AttachmentItem();
                MemoryStream   m     = new MemoryStream();
                m.Seek(0, SeekOrigin.Begin);
                inreg.InternalMemStream.CopyTo(m);
                m.Seek(0, SeekOrigin.Begin);
                aitem.Content  = m;
                aitem.MimeType = DriveApiService.GetMimeType(Path.GetExtension(inreg.FileName));
                aitem.Name     = inreg.FileName;
                items.Add(aitem);
            }


            return(items);
        }
示例#15
0
        /// <summary>
        /// 添加课件
        /// </summary>
        public void AddCourseware()
        {
            Courseware courseware = new Courseware();
            if (GetString("Name") != "")
            {
                courseware.Name = GetString("Name");
                courseware.Teacher = GetString("Teacher");
                courseware.Description = GetString("Description");
                courseware.PubDate = DateTime.Now;

                //保存附件用代码
                HttpFileCollection uploadFiles = this.HttpContext.Request.Files;
                // 设置上传目标文件夹
                string savaPath = this.HttpContext.Request.MapPath(@"../Content/uploadfiles/CoursewareFiles/");
                // 上传文件,并返回上传的文件名(由于附件表需要文件名称,所以SaveFiles函数返回了文件名
                List<string> fileNames = FileUpload.SaveFiles(uploadFiles, savaPath);
                Attachment attachment = new Attachment();
                //暂时将Type设置为0
                attachment.TypeID = 0;
                CQGJ.AddToAttachment(attachment);

                CQGJ.SaveChanges();
                foreach (var f in fileNames)
                {
                    AttachmentItem item = new AttachmentItem();
                    item.AddTime = DateTime.Now;
                    item.Attachment = attachment;
                    item.FileName = f.Split(',').First();
                    //表示激活
                    item.Status = 1;
                    CQGJ.AddToAttachmentItem(item);
                    courseware.DownloadCount = attachment.AttachmentID;
                    CQGJ.AddToCourseware(courseware);
                }
                CQGJ.SaveChanges();
                RedirectToAction("coursewarelist", "stuff");
            }
            RenderView("AddCourseware");
        }
示例#16
0
        /// <summary>
        /// 构建AttachmentItem
        /// </summary>
        /// <param name="file">上传的文件</param>
        /// <param name="isDb">是否二进制存储</param>
        /// <param name="isFtp">是否采用FTP上传</param>
        /// <returns></returns>
        /// <remarks>
        /// 2014-01-14 由唐鑫增加FTP上传扩展
        /// </remarks>
        private AttachmentItem BuildAttachmentItem(HttpPostedFileBase file, bool isDb, string dir = "", bool isFtp = true)
        {
            string fileName  = Path.GetFileName(file.FileName);
            string fullName  = GetFullFileName(fileName, dir);
            var    extension = Path.GetExtension(fileName);
            string fileExt   = string.Empty;

            if (extension != null)
            {
                fileExt = extension.Trim('.');
            }

            string contentType = file.ContentType;
            int    fileSize    = file.ContentLength;

            #region 原有上传代码  保留不删除 下面进行重写
            //EnsureDirectory(fullFilePath);

            ////保存附件
            //file.SaveAs(fullFilePath);
            #endregion

            AttachmentItem item = new AttachmentItem
            {
                FileName    = fileName,
                FileExt     = fileExt,
                FilePath    = fullName,
                FileSize    = fileSize,
                ContentType = contentType,
                IsDB        = isDb,
            };

            byte[] content = ReadStream(file.InputStream);

            item.Content.Content = content;

            return(item);
        }
示例#17
0
        private async Task <bool> MessageCreateUploadSession(string messageId, string fileName, byte[] bytes)
        {
            try
            {
                using (Stream stream = new MemoryStream(bytes))
                {
                    var attachmentItem = new AttachmentItem
                    {
                        AttachmentType = AttachmentType.File,
                        Name           = fileName,
                        Size           = stream.Length
                    };

                    var uploadSession = await graphClient.Me.Messages[messageId].Attachments
                                        .CreateUploadSession(attachmentItem)
                                        .Request()
                                        .PostAsync();

                    var maxChunkSize        = 320 * 1024;
                    var largeFileUploadTask = new LargeFileUploadTask <FileAttachment>(uploadSession, stream, maxChunkSize);

                    var uploadResult = await largeFileUploadTask.UploadAsync();

                    if (uploadResult.UploadSucceeded)
                    {
                        return(true);
                    }

                    return(false);
                }
            }
            catch (Exception ex)
            {
                //Logger.ErrorFormat("CreateUploadSession - Upload failed ex: {0}", ex);
                return(false);
            }
        }
        public JsonResult CreateEntry([FromBody] WarrantyClaimModel data)
        {
            string retval = "ok";

            if (!ProductIdValidationController.ValidateProductId(data.SerialNumber))
            {
                retval = "Invalid ProductId";
                return(new JsonResult(new { result = retval }));
            }


            string details =
                System.IO.File.ReadAllText(@"D:\home\site\wwwroot\" + "private.p12");


            using (MemoryStream receiptimage = ConvertFromBase64(data.ReceiptImageString))
                using (MemoryStream serialnumberimage = ConvertFromBase64(data.SerialNumberImageString))
                {
                    //saving data in google drive.
                    try
                    {
                        DriveApiService service = new DriveApiService();

                        string receiptfilename = "Receipt"
                                                 + "-" + data.SerialNumber
                                                 + "-" + data.LastName
                                                 + "-" + data.EmailAddress
                                                 + "-" + data.ReceiptFileName;

                        string serialnumberfilename = "SerialNumber"
                                                      + "-" + data.SerialNumber
                                                      + "-" + data.LastName
                                                      + "-" + data.EmailAddress
                                                      + "-" + data.ReceiptFileName;

                        string receipturllink =
                            service.UploadWarrantyClaimDocument(receiptimage,
                                                                receiptfilename);

                        string serialnumlink =
                            service.UploadWarrantyClaimDocument(serialnumberimage,
                                                                serialnumberfilename);


                        service.UpdateWarrantyClaimSheet(data.SerialNumber,
                                                         data.PurchaseDate,
                                                         data.FirstName,
                                                         data.LastName,
                                                         data.DateofBirth,
                                                         data.EmailAddress,
                                                         data.AddressLine1,
                                                         data.AddressLine2,
                                                         data.City,
                                                         data.State,
                                                         data.ZipCode,
                                                         data.Country,
                                                         data.ClaimReason,
                                                         receipturllink,
                                                         serialnumlink,
                                                         DateTime.Now.ToShortDateString());

                        //"*****@*****.**"
                        string ownerwarrantyemailbodystring =
                            GetOwnerWarrantyEmailBodyString(data, receipturllink, serialnumlink);
                        string customerwarrantyemailbodystring =
                            GetCustomerWarrantyEmailBodyString(data, receipturllink, serialnumlink);

                        AttachmentItem itemreceipt      = PackageImage(receiptimage, receiptfilename);
                        AttachmentItem itemserialnumber = PackageImage(serialnumberimage, serialnumberfilename);

                        List <AttachmentItem> items = new List <AttachmentItem>();
                        items.Add(itemreceipt);
                        items.Add(itemserialnumber);

                        List <string> owneremails = new List <string>();

                        owneremails.Add("*****@*****.**");

                        List <string> receipientemails = new List <string>();

                        receipientemails.Add(data.EmailAddress);

                        service.SendEmail(ownerwarrantyemailbodystring,
                                          "Warranty Claim Received",
                                          owneremails,
                                          items);
                        service.SendEmail(customerwarrantyemailbodystring,
                                          "Warranty Claim Received",
                                          receipientemails,
                                          new List <AttachmentItem>());
                    }

                    catch (Exception ex)
                    {
                        retval = "Error";
                    }
                }

            return(new JsonResult(new { result = retval }));
        }
示例#19
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="info"></param>
        /// <param name="isIncludeChildren"></param>
        /// <param name="isMutiple"></param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException"></exception>
        public AttachmentInfo SaveOrUpdate(AttachmentInfo info, bool isIncludeChildren = false, bool isMutiple = false)
        {
            if (info == null)
            {
                return(null);
            }

            AttachmentInfo attachmentInfo;

            if (info.Id > 0)
            {
                bool isUpdated = FILE_REPOSITORY.UpdateExecute(info);
                IEnumerable <AttachmentItem> deleteItems = FILE_REPOSITORY.GetItemsByFileId(info.Id).AsEnumerable();
                if (isUpdated)
                {
                    if (!isMutiple && info.Items != null && info.Items.Any()) //单附件上传需要清空掉数据
                    {
                        deleteItems.ForEach(item => FILE_REPOSITORY.DeleteExecute(item));
                    }
                    else if (isMutiple)
                    {
                        if (info.Items != null && info.Items.Any())
                        {
                            //如果是多附件上传 则删除新的集合中不存在的 保留原有的 添加最新上传的
                            deleteItems.ForEach(o =>
                            {
                                if (info.Items.Count(n => n.Id == o.Id) == 0)
                                {
                                    FILE_REPOSITORY.DeleteExecute(o);
                                }
                            });
                        }
                        else
                        {
                            deleteItems.ForEach(o => FILE_REPOSITORY.DeleteExecute(o));
                        }
                    }
                }

                attachmentInfo = info;
            }
            else
            {
                int id = FILE_REPOSITORY.AddExecute(info);

                attachmentInfo = FILE_REPOSITORY.GetById(id);

                attachmentInfo.Items = info.Items;
            }

            List <AttachmentItem> newItems = new List <AttachmentItem>();

            if (!isIncludeChildren)
            {
                return(attachmentInfo);
            }

            if (attachmentInfo.Items == null || !attachmentInfo.Items.Any())
            {
                return(attachmentInfo);
            }

            attachmentInfo.Items.ForEach(o => o.AttachmentInfoId = attachmentInfo.Id);

            foreach (var item in attachmentInfo.Items)
            {
                //如果是多附件上传 且当前的附件是旧附件 则不再保存 取出来实体即可
                if (item.Id > 0)
                {
                    AttachmentItem curItem = FILE_REPOSITORY.GetItemById(item.Id);

                    if (curItem != null)
                    {
                        curItem.IsOld = true;
                        newItems.Add(curItem);
                    }

                    continue;
                }

                AttachmentItem newItem = this.SaveOrUpdate(item);

                if (newItem == null)
                {
                    throw new ArgumentNullException("newItem", "newItem must be not null,please fix error");
                }

                newItem.Content = item.Content;
                newItem.Content.AttachmentItemId = newItem.Id;

                byte[] buffer = item.Content.Content;

                if (!item.IsDB)
                {
                    newItem.Content.Content = null;
                }

                newItem.Content         = this.SaveOrUpdate(newItem.Content);
                newItem.Content.Content = buffer;

                newItems.Add(newItem);
            }

            attachmentInfo.Items = newItems;

            return(attachmentInfo);
        }
示例#20
0
        /// <summary>
        /// 创建缩略图
        /// </summary>
        private void CreateSmallImg(FileInfo fileInfo, int index)
        {
            var border = new AttachmentItem();

            border._FileInfo = fileInfo;
            border._index    = index;

            border.Height          = 60;
            border.Width           = 60;
            border.Margin          = new Thickness(0, 0, 5, 5);
            border.BorderBrush     = CommonUtils.CommonUtil.ToBrush("#4a4a4a");
            border.BorderThickness = new Thickness(0.5);
            border.Background      = CommonUtils.CommonUtil.ToBrush("#FFFFFF");
            border.ContextMenu     = new System.Windows.Controls.ContextMenu();

            // 创建右键菜单
            var deleteMenu = new AttachmentMenuItem();

            deleteMenu.Header    = "删除";
            deleteMenu._FileInfo = fileInfo;
            deleteMenu._index    = index;
            deleteMenu.Click    += btnDel_Click;
            border.ContextMenu.Items.Add(deleteMenu);

            var saveMenu = new AttachmentMenuItem();

            saveMenu.Header    = "另存为";
            saveMenu._FileInfo = fileInfo;
            saveMenu._index    = index;
            saveMenu.Click    += btSave_Click;
            border.ContextMenu.Items.Add(saveMenu);

            border.MouseMove  += btnAdd_MouseMove;
            border.MouseLeave += btnAdd_MouseLeave;

            // 创建缩略图
            var img = new Image();

            if (".jpg".Equals(fileInfo.Extension.ToLower()) ||
                ".gif".Equals(fileInfo.Extension.ToLower()) ||
                ".png".Equals(fileInfo.Extension.ToLower()) ||
                ".jpeg".Equals(fileInfo.Extension.ToLower()))
            {
                if (File.Exists(fileInfo.FullName))
                {
                    var uri = new Uri(fileInfo.FullName);
                    img.Source = new BitmapImage(uri);
                    border.MouseLeftButtonUp += btnShowImage_Click;
                }
                else
                {
                    img.Height = 36;
                    img.Width  = 36;
                    img.Source = ImageUtil.GetImageFromResource(typeof(ResourceImage).FullName, "image");
                }
            }
            else
            {
                img.Height = 36;
                img.Width  = 36;
                img.Source = ImageUtil.GetImageFromResource(typeof(ResourceImage).FullName, "file");
                border.MouseLeftButtonUp += btnDownloadFile_Click;
            }
            border.Child = img;

            body.Children.Insert(body.Children.Count - 1, border);
        }
示例#21
0
 private async Task SendMessageAsync(Guid groupId, Guid senderId, string fileName, AttachmentItem attachment)
 {
     var fileMsg = new FileMessageVm
     {
         FileGuid = attachment.Id,
         FileName = fileName,
         FileSize = attachment.Size,
     };
     var msg = ConversationMsg.Create(groupId, senderId, fileMsg.GetJsonContent(), ConversationMsgType.File);
     var conversationMsgAppService = _conversationMsgAppServiceFactory(msg.ConversationId);
     await conversationMsgAppService?.SendMessageAsync(msg);
 }
示例#22
0
 /// <summary>
 /// There are no comments for AttachmentItem in the schema.
 /// </summary>
 public void AddToAttachmentItem(AttachmentItem attachmentItem)
 {
     base.AddObject("AttachmentItem", attachmentItem);
 }
        private static FeedDetailsExportModel Create(Person person, string schoolName, string sy, DateTime nowSchoolTime, DateTime?startRange, DateTime?endRange
                                                     , AnnouncementDetails ann, ClassDetails classDetails, IList <DayType> dayTypes
                                                     , IList <Staff> staffs, Standard standard, AnnouncementAssignedAttribute attribute, AttachmentItem attachmentItem, Person student, int studentOrder)
        {
            var res = new FeedDetailsExportModel(person, schoolName, sy, nowSchoolTime, startRange, endRange, ann, classDetails, dayTypes, staffs, standard, attribute, student, studentOrder);

            if (attachmentItem != null)
            {
                res.AnnouncementAttachmentId   = attachmentItem.Id;
                res.AnnouncementAttachmentName = attachmentItem.Name;
                res.Document = attachmentItem.Document;
                res.AnnouncementAttachmentImage = attachmentItem.Image;
                res.AnnouncementAttachmentOrder = attachmentItem.Order;
            }
            return(res);
        }
示例#24
0
        public void DocSave()
        {
            int ot = Convert.ToInt32(HttpContext.Session["OrgType"]);
            Doc doc = new Doc();
            if (GetString("DocTitle") != "" )
            {
                doc.DocTitle = GetString("DocTitle");
                doc.DocType = GetInt("DocType");
                doc.TrainType = GetInt("TrainType");
                doc.WordNo = GetString("WordNo");
                doc.YearNo = GetString("YearNo");
                doc.TeamNo = GetString("TeamNo");
                //采用select
                doc.UserID =(int?) GetUserID();
                doc.KeyWord = GetString("KeyWord");
                doc.DocClass = GetInt("DocClass");
                doc.UrgentLevel = GetInt("UrgentLevel");
                doc.SecretLevel = GetInt("SecretLevel");
                //来文单位
                string su = ((b01)HttpContext.Session["Org"]).b0101.ToString();
                doc.SourceUnit = su;
                //GetString("SourceUnit")
                //doc.SignMan = GetString("SignMan");
                doc.SignMan = GetOrgID().ToString();
                doc.ComeCause = GetString("ComeCause");
                doc.Summary = GetString("Summary");
                //不需那个控件了
                doc.DocCaption = GetString("DocCaption");
                doc.DocSource = GetString("DocSource");
                doc.PubDate = DateTime.Now;
                //发布状态
                //为1为草稿
                if (GetInt("token") == 1)
                {
                    doc.Status = (int?)DocStatus.Draft;
                }
                else
                {
                    doc.Status = (int?)DocStatus.Normal;
                }

                doc.ViewCount = 0;
                //取出发送的公文对象
                //b01 currentOrg = (b01)(HttpContext.Session["Org"]);
                //保存附件用代码
                if (HttpContext.Request.Files != null)
                {
                    HttpFileCollection uploadFiles = this.HttpContext.Request.Files;
                    // 设置上传目标文件夹
                    string savaPath = this.HttpContext.Request.MapPath(@"../Content/uploadfiles/");
                    // 上传文件,并返回上传的文件名(由于附件表需要文件名称,所以SaveFiles函数返回了文件名
                    List<string> fileNames = FileUpload.SaveFiles(uploadFiles, savaPath);
                    Attachment attachment = new Attachment();
                    //暂时将Type设置为0
                    attachment.TypeID = 0;
                    CQGJ.AddToAttachment(attachment);
                    doc.Attachment = attachment;
                    foreach (var f in fileNames)
                    {
                        AttachmentItem item = new AttachmentItem();
                        item.AddTime = DateTime.Now;
                        item.Attachment = attachment;
                        item.FileName = f.Split(',').First();
                        //表示激活
                        item.Status = 1;
                        CQGJ.AddToAttachmentItem(item);
                    }
                }

                //如果单位类型为重庆市委组织部
                if (ot == 1)
                {
                    //存储发送对象
                    string ddd = GetString("DocDownUser");
                    string[] strList = GetString("DocDownUser").Split(',');
                    foreach (var c in strList)
                    {
                        int iOrgID = ToOrgID(c);
                        DocTreat doctreat = new DocTreat();
                        doctreat.Doc = doc;
                        doctreat.Org = (from o in CQGJ.Org
                                        where o.OrgID == iOrgID
                                        select o).First();
                        if (GetInt("token") == 1)
                        {
                            doctreat.TreatType = (int?)DocProcessStatus.Draft;
                        }
                        else
                        {
                            doctreat.TreatType = (int?)DocProcessStatus.Published;
                        }

                        doctreat.DownCount = 0;
                        doctreat.LastDownTime = DateTime.Now;
                        doctreat.TreatContent = "暂时没有反馈";
                        CQGJ.AddToDocTreat(doctreat);
                    }
                }
                else if (ot == 2 || ot == 3 || ot == 4)
                {
                    b01[] orgList = cqgjPassport.GetOrglistByType(1);
                    foreach (var c in orgList)
                    {
                        int iOrgID = ToOrgID(c.b0111);
                        DocTreat docTreat = new DocTreat();
                        docTreat.Doc = doc;
                        docTreat.Org = (from o in CQGJ.Org
                                        where o.OrgID == iOrgID
                                        select o).First();
                        if (GetInt("token") == 1)
                        {
                            docTreat.TreatType = (int?)DocProcessStatus.Draft;
                        }
                        else
                        {
                            docTreat.TreatType = (int?)DocProcessStatus.Published;
                        }
                        docTreat.DownCount = 0;
                        docTreat.LastDownTime = DateTime.Now;
                        docTreat.TreatContent = "暂时没有反馈";
                        CQGJ.AddToDocTreat(docTreat);
                    }
                }
                CQGJ.AddToDoc(doc);
                CQGJ.SaveChanges();

                //在跳转时提供viewData
                DocActionResultViewData viewData = new DocActionResultViewData();
                viewData.ActionSuccess = true;
                viewData.Message = "提交公文成功";

                viewData.javascriptMessage = "/doc/docadd/1";
                RenderView("MessagePage", viewData);
            }
            //注意:组织部和下级单位跳转的页面不一样
            if (ot == 1)
            {
                RedirectToAction("DocSendedIndex");
            }
            else
            {
                RedirectToAction("DocSendedSubList/1/1/1");
            }
        }
示例#25
0
    //上传
    protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        if (ddlCategory.SelectedIndex == 0)
        {
            JsHelper.Alert(Page, string.Format("请先选择“分类”再上传!"));
            ddlCategory.Focus();
            return;
        }

        if (FileUpload1.HasFile)
        {
            if (FileUpload1.FileName.Contains("#"))
            {
                JsHelper.Alert(Page, string.Format("文件名不能包含 # 特殊符号,请修改!"));
                return;
            }
            int fileUploadSize = 20;
            //fileUploadSize = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["FileUploadSize"]);
            if (FileUpload1.FileContent.Length / 1024.0 / 1024.0 > fileUploadSize)
            {
                JsHelper.Alert(Page, string.Format("附件大小不能超过{0}M", fileUploadSize));
                return;
            }
            string dir = ddlCategory.SelectedItem.Text;
            if (!Directory.Exists(Server.MapPath("~/WorkFlowRule/Upload/" + dir + "/")))
            {
                Directory.CreateDirectory(Server.MapPath("~/WorkFlowRule/Upload/" + dir + "/"));
            }
            string fileName = FileUpload1.FileName;
            string path     = "/WorkFlowRule/Upload/" + dir + "/" + fileName;

            List <AttachmentItem> items = (List <AttachmentItem>)ViewState["Attachments"];

            if (File.Exists(Server.MapPath("~" + path)))
            {
                AttachmentItem item  = items.Where(p => p.FilePath + p.FileName == path).FirstOrDefault();
                int            index = items.IndexOf(item);
                if (index > -1)
                {
                    items.RemoveAt(index);
                }
            }

            string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
            FileUpload1.PostedFile.SaveAs(Server.MapPath(path));

            AttachmentItem model = new AttachmentItem();
            model.FileSize      = FileUpload1.PostedFile.ContentLength;
            model.FileName      = fileName;
            model.FilePath      = "/WorkFlowRule/Upload/" + dir + "/";
            model.Attachment_ID = Guid.NewGuid();
            model.Created_On    = DateTime.Now;

            items.Add(model);

            ViewState["Attachments"] = items;
            BindAttachment();
        }
        else
        {
            JsHelper.Alert(Page, "请选择文件!");
        }
    }
示例#26
0
        public IHttpActionResult GetNotifications(PagedResults pagedResults)
        {
            var userId     = pagedResults.UserId;
            var pageSize   = pagedResults.PageSize;
            var pageNumber = pagedResults.PageNumber;

            var activities = this.GetRepository <Activity>().GetPaged(
                a => a.UserID == userId && a.FromUserID.HasValue && a.Notification,
                pageNumber,
                pageSize);

            var attachmentItems = new List <AttachmentItem>();

            activities.ForEach(
                activity =>
            {
                var messageHolder = new PlaceHolder();
                var iconLabel     = new Label {
                    CssClass = "fa-stack"
                };

                var message = string.Empty;
                var icon    = string.Empty;

                var topicLink = new HyperLink
                {
                    NavigateUrl =
                        BuildLink.GetLink(
                            ForumPages.Posts,
                            "m={0}#post{0}",
                            activity.MessageID.Value),
                    Text =
                        $"<i class=\"fas fa-comment fa-fw mr-1\"></i>{this.GetRepository<Topic>().GetById(activity.TopicID.Value).TopicName}"
                };

                var name = this.Get <IUserDisplayName>().GetName(activity.FromUserID.Value);

                if (activity.ActivityFlags.ReceivedThanks)
                {
                    icon    = "heart";
                    message = this.Get <ILocalization>().GetTextFormatted(
                        "RECEIVED_THANKS_MSG",
                        name,
                        topicLink.RenderToString());
                }

                if (activity.ActivityFlags.WasMentioned)
                {
                    icon    = "at";
                    message = this.Get <ILocalization>().GetTextFormatted(
                        "WAS_MENTIONED_MSG",
                        name,
                        topicLink.RenderToString());
                }

                if (activity.ActivityFlags.WasQuoted)
                {
                    icon    = "quote-left";
                    message = this.Get <ILocalization>().GetTextFormatted(
                        "WAS_QUOTED_MSG",
                        name,
                        topicLink.RenderToString());
                }

                var notify = activity.Notification ? "text-success" : "text-secondary";

                iconLabel.Text = $@"<i class=""fas fa-circle fa-stack-2x {notify}""></i>
                                            <i class=""fas fa-{icon} fa-stack-1x fa-inverse""></i>";

                messageHolder.Controls.Add(iconLabel);

                messageHolder.Controls.Add(new Literal {
                    Text = message
                });

                var attachment = new AttachmentItem
                {
                    FileName = messageHolder.RenderToString()
                };

                attachmentItems.Add(attachment);
            });

            return(this.Ok(
                       new GridDataSet
            {
                PageNumber = pageNumber,
                TotalRecords =
                    activities.Any()
                                ? this.GetRepository <Activity>().Count(a => a.UserID == userId && a.FromUserID.HasValue && a.Notification)
                    .ToType <int>()
                                : 0,
                PageSize = pageSize,
                AttachmentList = attachmentItems
            }));
        }
        public JsonResult CreateEntry([FromBody] RegistrationModel data)
        {
            string retval = "ok";

            if (!ProductIdValidationController.ValidateProductId(data.SerialNumber))
            {
                retval = "Invalid ProductId";
                return(new JsonResult(new { result = retval }));
            }


            string details =
                System.IO.File.ReadAllText(@"D:\home\site\wwwroot\" + "private.p12");

            MemoryStream image = ConvertFromBase64(data.ImageString);

            //saving data in google drive.
            //try
            //{
            DriveApiService service = new DriveApiService();

            string filename1 = data.SerialNumber
                               + "-" + data.LastName
                               + "-" + data.EmailAddress
                               + "-" + data.FileName;

            string urllink =
                service.UploadRegistrationDocument(image,
                                                   filename1);

            service.UpdateRegistrationSheet(data.SerialNumber,
                                            data.PurchaseDate,
                                            data.FirstName,
                                            data.LastName,
                                            data.DateofBirth,
                                            data.EmailAddress,
                                            data.AddressLine1,
                                            data.AddressLine2,
                                            data.City,
                                            data.State,
                                            data.ZipCode,
                                            data.Country,
                                            urllink,
                                            DateTime.Now.ToShortDateString());

            //"*****@*****.**"
            string ownerregistrationemailbodystring =
                GetOwnerRegistrationEmailBodyString(data, urllink);
            string customerregistrationemailbodystring =
                GetCustomerRegistrationEmailBodyString(data, urllink);

            AttachmentItem item = PackageImage(image, data);

            List <AttachmentItem> items = new List <AttachmentItem>();

            items.Add(item);

            List <string> owneremails = new List <string>();

            owneremails.Add("*****@*****.**");

            List <string> receipientemails = new List <string>();

            receipientemails.Add(data.EmailAddress);

            service.SendEmail(ownerregistrationemailbodystring,
                              "Registration Received",
                              owneremails,
                              items);
            service.SendEmail(customerregistrationemailbodystring,
                              "Registration Received",
                              receipientemails,
                              new List <AttachmentItem>());

            //}

            // catch(Exception ex)
            // {
            //     retval = "Error";
            // }



            return(new JsonResult(new { result = retval }));;
        }
示例#28
0
        public JsonResult CreateEntry([FromBody] ACHPaymentUploadModel data)
        {
            string retval = "ok";

            string details =
                System.IO.File.ReadAllText("private.p12");

            string voidcheckfilename = "voidcheck"
                                       + "-" + System.DateTime.Now.Ticks
                                       + "-" + data.FEIN
                                       + "-" + data.CompanyName
                                       + "-" + data.VoidCheckFileName;

            try
            {
                using (MemoryStream voidcheck = ImageHelpers.ConvertFromBase64(data.VoidCheckImageString))
                {
                    DriveApiService service = new DriveApiService();

                    string voidcheckfileurl =
                        service.UploadVoidCheckDocument(voidcheck, voidcheckfilename);

                    service.UploadACHPaymentRequest(data.CompanyName,
                                                    data.ContactName,
                                                    data.BankName,
                                                    data.AccountType,
                                                    data.BankRoutingNumber,
                                                    data.BankRoutingVerified,
                                                    data.BankAccountNumber,
                                                    data.EmailAddress,
                                                    data.AddressLine1,
                                                    data.AddressLine2,
                                                    data.City,
                                                    data.State,
                                                    data.PrintedName,
                                                    data.TitleName,
                                                    data.FEIN,
                                                    data.datesigned,
                                                    data.ZipCode,
                                                    voidcheckfileurl,
                                                    data.CommentsOrMessage,
                                                    data.Source);


                    string ownerachemailbodystring =
                        GetOwnerACHEmailBodyString(data, voidcheckfileurl);
                    string customerachemailbodystring =
                        GetCustomerACHEmailBodyString(data);

                    AttachmentItem itemvoidcheck = PackageImage(ImageHelpers.ConvertFromBase64(data.VoidCheckImageString),
                                                                data.VoidCheckFileName);

                    List <AttachmentItem> items = new List <AttachmentItem>();
                    items.Add(itemvoidcheck);

                    List <string> owneremails = new List <string>();

                    owneremails.Add("*****@*****.**");

                    List <string> receipientemails = new List <string>();

                    receipientemails.Add(data.EmailAddress);

                    service.SendEmail(ownerachemailbodystring,
                                      "ACH Request Received",
                                      owneremails,
                                      items);
                    service.SendEmail(customerachemailbodystring,
                                      "ACH Request Received",
                                      receipientemails,
                                      new List <AttachmentItem>());
                }
            }

            catch (Exception ex)
            {
                retval = "Error";
            }

            return(new JsonResult(new { result = retval }));
        }
示例#29
0
        /// <summary>
        /// 发起一个新的BBS话题
        /// </summary>
        public void CreateTopicItem()
        {
            BBSItem BBSItem = new BBSItem();

            CQGJ.passport.User passportUser = (CQGJ.passport.User)HttpContext.Session["userobject"];

            string subject = GetString("subject");
            string content = GetString("BBSItemContent");
            // 发起帖parentId为-1
            int parentId = -1;
            //status为备用字段,暂时设置为0
            int status = 0;
            //TypeID暂时设置为0
            int typeId = 0;
            // 取得登陆用户ID,userId
            int userId = ToUserID(passportUser.UserID);;
            // 取得用户姓名
            string userName = passportUser.Username;
            int bbsId = GetInt("bbsid");
            // 取得上传附件组的ID, 1表示没有附件
            int attachmentId = 1;

            // 保存文件的路径
            string strAbsolutePath = this.HttpContext.Request.MapPath(@"../Content/UploadFiles/BBSFiles/");

            // 上传附件, 并获取附件组的ID
            try
            {
                // 获取上传附件组
                HttpFileCollection uploadFiles = this.HttpContext.Request.Files;

                // 创建一个附件组
                Attachment at = new Attachment();

                if (uploadFiles.Count > 1)
                {
                    // ?好像数据库中存在数据的情况下才可以使用orderby语句, 否则会报错
                    // 所以需要对Attachment数据库初使化
                    attachmentId = (from attachment in CQGJ.Attachment orderby attachment.AttachmentID descending select attachment.AttachmentID).First() + 1;
                    at.AttachmentID = attachmentId;

                    // 在数据库中加一个附件组信息
                    CQGJ.AddToAttachment(at);
                }

                at.TypeID = 0; // 暂时设为0

                // 获取新建的附件组的ID
                //attachmentId = at.AttachmentID;

                for (int j = 1; j < uploadFiles.Count; j++)
                {
                    // 创建一个附件
                    AttachmentItem ai = new AttachmentItem();

                    ai.AddTime = DateTime.Now;
                    ai.Status = 0; // 暂时设置为0
                    ai.UserID = userId;
                    ai.TotalSize = uploadFiles[j].ContentLength;
                    ai.Attachment = at;
                    // 上传的文件是用原名呢,还是生成一个名字呢?
                    //ai.FileName = uploadFiles[j].FileName;
                    ai.FileName = FileUpload.SaveFile(uploadFiles[j], strAbsolutePath);

                    // 在数据库中加一个附件信息
                    CQGJ.AddToAttachmentItem(ai);

                    CQGJ.SaveChanges();

                }
            }
            catch (HttpException)
            {
                // 网络异常
            }
            catch (InvalidOperationException)
            {
                Response.Write("错误操作!");
            }

            CreateItem(subject, content, parentId, status, typeId, userId, userName, bbsId, attachmentId);

            // count 为数据库中发帖总数
            int count = (from bi in CQGJ.BBSItem where bi.ParentID == -1 && bi.BBS.BBSID == bbsId select bi).Count();

            // page 为当前发帖的页码
            int page = count / 10;

            if (count % 10 != 0)
            {
                page = count / 10 + 1;
            }

            // 返回BBS列表页面
            RedirectToAction("ListBBSItemsByPage/" + bbsId + "/" + page);
        }
示例#30
0
 // Create upload session
 public async Task <UploadSession> CreateUploadSession(Message message, string userId, AttachmentItem attachmentItem)
 {
     return(await _graphClient
            .Users[userId]
            .Messages[message.Id]
            .Attachments
            .CreateUploadSession(attachmentItem)
            .Request()
            .PostAsync());
 }
示例#31
0
        public void DocEditSave()
        {
            int DocID = GetInt("DocID");
            if (DocID != 0)
            {
                Doc doc = (from c in CQGJ.Doc
                           where c.DocID == DocID
                           select c).First();
                doc.DocTitle = GetString("DocTitle");
                doc.DocType = GetInt("DocType");
                doc.TrainType = GetInt("TrainType");
                doc.WordNo = GetString("WordNo");
                doc.YearNo = GetString("YearNo");
                doc.TeamNo = GetString("TeamNo");
                //采用select
                doc.UserID = (int?)GetUserID();
                doc.KeyWord = GetString("KeyWord");
                doc.DocClass = GetInt("DocClass");
                doc.UrgentLevel = GetInt("UrgentLevel");
                doc.SecretLevel = GetInt("SecretLevel");
                //来文单位
                string su = ((b01)HttpContext.Session["Org"]).b0101.ToString();
                doc.SourceUnit = su;
                //GetString("SourceUnit")
                //doc.SignMan = GetString("SignMan");
                doc.SignMan = GetOrgID().ToString();
                doc.ComeCause = GetString("ComeCause");
                doc.Summary = GetString("Summary");
                //不需那个控件了
                doc.DocCaption = GetString("DocCaption");
                doc.DocSource = GetString("DocSource");
                doc.PubDate = DateTime.Now;
                //发布状态
                doc.Status = (int?)DocProcessStatus.Published;
                int attachementID = Convert.ToInt32(doc.AttachmentReference.EntityKey.EntityKeyValues[0].Value);

                if (HttpContext.Request.Files != null)
                {
                    HttpFileCollection uploadFiles = this.HttpContext.Request.Files;
                    // 设置上传目标文件夹
                    string savaPath = this.HttpContext.Request.MapPath(@"../Content/uploadfiles/");
                    // 上传文件,并st返回上传的文件名(由于附件表需要文件名称,所以SaveFiles函数返回了文件名
                    List<string> fileNames = FileUpload.SaveFiles(uploadFiles, savaPath);
                    Attachment attachment = (from a in CQGJ.Attachment
                                             where a.AttachmentID == attachementID
                                             select a).First();
                    foreach (var f in fileNames)
                    {
                        AttachmentItem item = new AttachmentItem();
                        item.AddTime = DateTime.Now;
                        item.Attachment = attachment;
                        item.FileName = f.Split(',').First();
                        //表示激活
                        item.Status = 1;
                        CQGJ.AddToAttachmentItem(item);
                    }
                }
                IEnumerable<DocTreat> lsDoctreat = (from c in CQGJ.Doc
                                                    from dt in c.DocTreat
                                                    where c.DocID == DocID
                                                    select dt);
                foreach (var c in lsDoctreat)
                {
                    c.TreatType = (int?)DocProcessStatus.Published;
                }

                CQGJ.SaveChanges();
                RedirectToAction("DocEdit/" + DocID);
            }
        }
 public async Task FillMemoryStreamAsync(AttachmentItem dto, MemoryStream ms)
 {
     await _client.GetObjectAsync(_minioOption.BucketName, dto.Location,
                                  stream => stream.CopyTo(ms));
 }
        //TODO FIX TestDownloadThumbnailsAsync
        //[TestMethod]
        public async Task TestDownloadThumbnailsAsync()
        {
            var md5      = Guid.NewGuid().ToString("N");
            var formFile = Substitute.For <IFormFile>();

            var appService = Substitute.For <IAttachmentAppService>();

            IAttachmentAppService factory(string id) => appService;

            var cacheDict    = new Dictionary <string, byte[]>();
            var storeService = Substitute.For <IAttachmentStoreService>();
            var cache        = Substitute.For <IMemoryCache>();

            cache.Set(Arg.Any <string>(), Arg.Any <byte[]>(), Arg.Any <TimeSpan>())
            .Returns(x =>
            {
                return(x[1] as byte[]);
            });
            cache.TryGetValue(Arg.Any <string>(), out Arg.Any <byte[]>())
            .Returns(x =>
            {
                if (cacheDict.ContainsKey(x[0].ToString()))
                {
                    x[1] = cacheDict[x[0].ToString()];
                    return(true);
                }
                return(false);
            });

            var target = new AttachmentController(factory, storeService, cache);

            target.ControllerContext = CreateMockContext();

            var result = await target.DownloadThumbnailsAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            appService.GetByIdAsync(md5)
            .Returns(new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploading,
                Location = null
            });
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            appService.GetByIdAsync(md5)
            .Returns(new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploaded,
                Location = null
            });
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <NotFoundResult>();

            var dto = new AttachmentItem
            {
                Id       = md5,
                Status   = UploadStatus.Uploaded,
                Location = "abc.jpg"
            };

            appService.GetByIdAsync(md5)
            .Returns(dto);
            storeService.FillMemoryStreamAsync(dto, Arg.Any <MemoryStream>())
            .Returns(Task.CompletedTask);
            result = await target.DownloadFileAsync(md5, null);

            result.Should().BeOfType <FileStreamResult>();

            await storeService.Received().FillMemoryStreamAsync(dto, Arg.Any <MemoryStream>());
        }
示例#34
0
 /// <summary>
 /// Create a new AttachmentItem object.
 /// </summary>
 /// <param name="itemID">Initial value of ItemID.</param>
 public static AttachmentItem CreateAttachmentItem(int itemID)
 {
     AttachmentItem attachmentItem = new AttachmentItem();
     attachmentItem.ItemID = itemID;
     return attachmentItem;
 }