Пример #1
0
        public async Task TravelAttachmentRepository_DeleteTravelAttachment_Deleted_NotFail_Test()
        {
            var context = new MyCompanyContext();
            ITravelAttachmentRepository target = new TravelAttachmentRepository(new MyCompanyContext());

            var travelRequestId = context.TravelRequests.FirstOrDefault().TravelRequestId;

            System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
            var newTravelAttachment           = new TravelAttachment()
            {
                Name            = "Boarding Pass",
                FileName        = "BoardingPass.pdf",
                Content         = encoder.GetBytes("sample"),
                TravelRequestId = travelRequestId,
            };

            int travelAttachmentId = await target.AddAsync(newTravelAttachment);

            int expected = context.TravelAttachments.Count() - 1;

            await target.DeleteAsync(travelAttachmentId);

            int actual = context.TravelAttachments.Count();

            Assert.AreEqual(expected, actual);
        }
Пример #2
0
        /// <summary>
        /// <see cref="MyCompany.Travel.Data.Repositories.ITravelAttachmentRepository"/>
        /// </summary>
        /// <param name="travelAttachment"><see cref="MyCompany.Travel.Data.Repositories.ITravelAttachmentRepository"/></param>
        public async Task UpdateAsync(TravelAttachment travelAttachment)
        {
            _context.Entry <TravelAttachment>(travelAttachment)
            .State = EntityState.Modified;

            await _context.SaveChangesAsync();
        }
Пример #3
0
        /// <summary>
        /// <see cref="MyCompany.Travel.Data.Repositories.ITravelAttachmentRepository"/>
        /// </summary>
        /// <param name="travelAttachment"><see cref="MyCompany.Travel.Data.Repositories.ITravelAttachmentRepository"/></param>
        /// <returns><see cref="MyCompany.Travel.Data.Repositories.ITravelAttachmentRepository"/></returns>
        public async Task <int> AddAsync(TravelAttachment travelAttachment)
        {
            _context.TravelAttachments.Add(travelAttachment);
            await _context.SaveChangesAsync();

            return(travelAttachment.TravelAttachmentId);
        }
Пример #4
0
        public async Task Update(TravelAttachment travelAttachment)
        {
            if (travelAttachment == null)
            {
                throw new ArgumentNullException("travelAttachment");
            }

            await _travelAttachmentRepository.UpdateAsync(travelAttachment);
        }
Пример #5
0
        public async Task <int> Add(TravelAttachment travelAttachment)
        {
            if (travelAttachment == null)
            {
                throw new ArgumentNullException("travelAttachment");
            }

            return(await _travelAttachmentRepository.AddAsync(travelAttachment));
        }
        private void RemoveAttachmentCommandExecute(TravelAttachment attachment)
        {
            if (attachment.TravelAttachmentId > 0)
            {
                removedAttachments.Add(attachment.TravelAttachmentId);
            }

            AttachmentsList.Remove(attachment);
            RaisePropertyChanged(() => AttachmentsList);
        }
        public async Task TravelAttachmentService_Get_Test()
        {
            var client = new MyCompanyClient(SecurityHelper.UrlBase, SecurityHelper.AccessToken);

            var context            = new Data.MyCompanyContext();
            var travelAttachmentId = context.TravelAttachments.FirstOrDefault().TravelAttachmentId;

            TravelAttachment travelAttachment = await client.TravelAttachmentService.Get(travelAttachmentId);

            Assert.IsNotNull(travelAttachment);
            Assert.AreEqual(travelAttachmentId, travelAttachment.TravelAttachmentId);
        }
Пример #8
0
        public async Task <HttpResponseMessage> DownloadFile(int travelAttachmentId)
        {
            TravelAttachment attachment = await _travelAttachmentRepository.GetAsync(travelAttachmentId);

            if (attachment == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);

            result.Content = new ByteArrayContent(attachment.Content);
            result.Content.Headers.ContentType                 = new MediaTypeHeaderValue("application/octet-stream");
            result.Content.Headers.ContentDisposition          = new ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentDisposition.FileName = attachment.FileName;

            return(result);
        }
        private async void DownloadAttachmentCommandExecute(TravelAttachment attachment)
        {
            Messenger.Default.Send(new LoadingMessage(true));
            try
            {
                TravelAttachment travelAttachment = await myCompanyClient.TravelAttachmentService.Get(attachment.TravelAttachmentId);

                string     folderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                string     filePath   = Path.Combine(folderPath, travelAttachment.FileName);
                FileStream fileStream = File.Create(filePath);
                fileStream.Write(travelAttachment.Content, 0, travelAttachment.Content.Length);
                fileStream.Flush();
                fileStream.Close();
                Messenger.Default.Send(new LoadingMessage(false));
                System.Diagnostics.Process.Start(filePath);
            }
            catch (Exception)
            {
                Messenger.Default.Send(new LoadingMessage(false));
                CustomDialogMessage message = new CustomDialogMessage(() => { }, StringResources.UnexpectedError, Visibility.Collapsed);
                Messenger.Default.Send <CustomDialogMessage>(message);
            }
        }
        public async Task TravelAttachmentsController_Update_Test()
        {
            bool called = false;
            var  travelAttachmentsRepository = new Data.Repositories.Fakes.StubITravelAttachmentRepository();

            var updateTravelAttachments = new TravelAttachment()
            {
                TravelRequestId = 1,
            };

            travelAttachmentsRepository.UpdateAsyncTravelAttachment = (travelAttachment) =>
            {
                Assert.IsTrue(updateTravelAttachments.TravelRequestId == travelAttachment.TravelRequestId);
                called = true;

                return(Task.FromResult(string.Empty));
            };

            var target = new TravelAttachmentsController(travelAttachmentsRepository);
            await target.Update(updateTravelAttachments);

            Assert.IsTrue(called);
        }
        public async Task TravelAttachmentsController_Add_Test()
        {
            bool called = false;
            var  travelAttachmentsRepository = new Data.Repositories.Fakes.StubITravelAttachmentRepository();

            var newTravelAttachments = new TravelAttachment()
            {
                TravelRequestId = 1,
            };

            travelAttachmentsRepository.AddAsyncTravelAttachment = (travelAttachment) =>
            {
                Assert.IsTrue(newTravelAttachments.TravelRequestId == travelAttachment.TravelRequestId);
                called = true;

                return(Task.FromResult(10));
            };

            var target  = new TravelAttachmentsController(travelAttachmentsRepository);
            var idAdded = await target.Add(newTravelAttachments);

            Assert.IsTrue(called);
        }
        public async Task TravelAttachmentService_AddTravelAttachment_Added_NotFail_Test()
        {
            var client = new MyCompanyClient(SecurityHelper.UrlBase, SecurityHelper.AccessToken);

            var context  = new Data.MyCompanyContext();
            int expected = context.TravelAttachments.Count() + 1;

            var travelRequestId = context.TravelRequests.FirstOrDefault().TravelRequestId;

            System.Text.ASCIIEncoding encoder = new System.Text.ASCIIEncoding();
            var travelAttachment = new TravelAttachment()
            {
                Name            = "Boarding Pass",
                FileName        = "BoardingPass.pdf",
                Content         = encoder.GetBytes("sample"),
                AttachmentType  = AttachmentType.BoardingPass,
                TravelRequestId = travelRequestId,
            };

            int travelAttachmentId = await client.TravelAttachmentService.Add(travelAttachment);

            int actual = context.TravelAttachments.Count();

            Assert.AreEqual(expected, actual);

            travelAttachment.TravelAttachmentId = travelAttachmentId;
            travelAttachment.AttachmentType     = AttachmentType.Other;
            await client.TravelAttachmentService.Update(travelAttachment);

            var actualUpdated = context.TravelAttachments.Where(t => t.TravelAttachmentId == travelAttachmentId).FirstOrDefault();

            await client.TravelAttachmentService.Delete(travelAttachmentId);

            actual = context.TravelAttachments.Count();

            Assert.AreEqual(expected - 1, actual);
        }
Пример #13
0
        public async Task <int> UploadFile()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            int    travelRequestId    = 0;
            string fileFriendlyName   = string.Empty;
            int    travelAttachmentId = 0;

            string root      = HttpContext.Current.Server.MapPath("~/App_Data");
            var    directory = new DirectoryInfo(root);

            if (!directory.Exists)
            {
                directory.Create();
            }

            var provider = new MultipartFormDataStreamProvider(root);

            await Request.Content.ReadAsMultipartAsync(provider);

            var serializer = new Newtonsoft.Json.JsonSerializer();

            foreach (var key in provider.FormData.AllKeys)
            {
                var val = provider.FormData.GetValues(key)[0];

                if (key == "travelRequestId")
                {
                    travelRequestId = (int)serializer.Deserialize(new StringReader(val), typeof(int));
                }

                if (key == "fileFriendlyName")
                {
                    fileFriendlyName = val;
                }
            }

            if (travelRequestId <= 0)
            {
                throw new ArgumentNullException("travelRequestId");
            }

            if (provider.FileData != null && provider.FileData.Count > 0)
            {
                byte[] file = File.ReadAllBytes(provider.FileData[0].LocalFileName);

                TravelAttachment attachment = new TravelAttachment()
                {
                    Name            = fileFriendlyName,
                    FileName        = Path.GetFileName(UnquoteFileName(provider.FileData[0].Headers.ContentDisposition.FileName)),
                    TravelRequestId = travelRequestId,
                    Content         = file
                };

                travelAttachmentId = await Add(attachment);

                File.Delete(provider.FileData[0].LocalFileName);
            }

            return(travelAttachmentId);
        }