public async Task SQL_File_FileRead_doesFileRead()
        {
            uploaded_data ud = new uploaded_data
            {
                Checksum      = "checksum1",
                Extension     = "extension",
                CurrentFile   = "currentFile1",
                UploaderId    = 223,
                UploaderType  = "uploader_type",
                FileLocation  = "file_location",
                FileName      = "fileName",
                WorkflowState = Constants.WorkflowStates.PreCreated
            };

            dbContext.uploaded_data.Add(ud);
            await dbContext.SaveChangesAsync().ConfigureAwait(false);

            // Act
            UploadedData Ud = await sut.FileRead();

            // Assert

            Assert.NotNull(ud);
            Assert.NotNull(Ud);
            Assert.AreEqual(Ud.Checksum, ud.Checksum);
            Assert.AreEqual(Ud.Extension, ud.Extension);
            Assert.AreEqual(Ud.CurrentFile, ud.CurrentFile);
            Assert.AreEqual(Ud.UploaderId, ud.UploaderId);
            Assert.AreEqual(Ud.UploaderType, ud.UploaderType);
            Assert.AreEqual(Ud.FileLocation, ud.FileLocation);
            Assert.AreEqual(Ud.FileName, ud.FileName);
            Assert.AreEqual(Ud.Id, ud.Id);
            Assert.AreEqual(Constants.WorkflowStates.PreCreated, ud.WorkflowState);
        }
Пример #2
0
        public void Process(UploadedData data)
        {
            var models = new List <DataModel>();
            var lines  = _reader.ReadLines(data.FilePath);

            foreach (var line in lines)
            {
                models.Add(_mapper.MapLine(line));
            }

            _dataPersister.Save(models);
        }
Пример #3
0
        public async Task <OperationResult> Delete(int id)
        {
            UploadedData uploadedData =
                await _dbContext.UploadedDatas.SingleOrDefaultAsync(x => x.Id == id);

            if (uploadedData != null)
            {
                await uploadedData.Delete(_dbContext);

                return(new OperationResult(true));
            }
            return(new OperationResult(false));
        }
Пример #4
0
        public ActionResult Index(HttpPostedFileBase uploadedFile)
        {
            var          file         = Request.Files[0];
            UploadedData uploadedData = null;

            if (file.FileName.EndsWith(".csv"))
            {
                var fileStream = file.InputStream;
                uploadedData = _transactionService.UploadTransactions(fileStream);
            }
            TempData["UploadedData"] = uploadedData;
            return(View(uploadedData));
        }
        public async Task SQL_UploadedData_FileRead_DoesReturnOneUploadedData()
        {
            // Arrance
            string checksum     = "";
            string extension    = "jpg";
            string currentFile  = "Hello.jpg";
            int    uploaderId   = 1;
            string fileLocation = @"c:\here";
            string fileName     = "Hello.jpg";

            // Act
            uploaded_data dU = new uploaded_data
            {
                CreatedAt     = DateTime.Now,
                UpdatedAt     = DateTime.Now,
                Extension     = extension,
                UploaderId    = uploaderId,
                UploaderType  = Constants.UploaderTypes.System,
                WorkflowState = Constants.WorkflowStates.PreCreated,
                Version       = 1,
                Local         = 0,
                FileLocation  = fileLocation,
                FileName      = fileName,
                CurrentFile   = currentFile,
                Checksum      = checksum
            };


            dbContext.uploaded_data.Add(dU);
            await dbContext.SaveChangesAsync().ConfigureAwait(false);

            UploadedData ud = await sut.FileRead();

            // Assert
            Assert.NotNull(ud);
            Assert.AreEqual(dU.Id, ud.Id);
            Assert.AreEqual(dU.Checksum, ud.Checksum);
            Assert.AreEqual(dU.Extension, ud.Extension);
            Assert.AreEqual(dU.CurrentFile, ud.CurrentFile);
            Assert.AreEqual(dU.UploaderId, ud.UploaderId);
            Assert.AreEqual(dU.UploaderType, ud.UploaderType);
            Assert.AreEqual(dU.FileLocation, ud.FileLocation);
            Assert.AreEqual(dU.FileName, ud.FileName);
            // Assert.AreEqual(dU.local, ud.);
        }
        public void SQL_UploadedData_FileRead_DoesReturnOneUploadedData()
        {
            // Arrance
            string checksum     = "";
            string extension    = "jpg";
            string currentFile  = "Hello.jpg";
            int    uploaderId   = 1;
            string fileLocation = @"c:\here";
            string fileName     = "Hello.jpg";

            // Act
            uploaded_data dU = new uploaded_data();

            dU.created_at     = DateTime.Now;
            dU.updated_at     = DateTime.Now;
            dU.extension      = extension;
            dU.uploader_id    = uploaderId;
            dU.uploader_type  = Constants.UploaderTypes.System;
            dU.workflow_state = Constants.WorkflowStates.PreCreated;
            dU.version        = 1;
            dU.local          = 0;
            dU.file_location  = fileLocation;
            dU.file_name      = fileName;
            dU.current_file   = currentFile;
            dU.checksum       = checksum;

            DbContext.uploaded_data.Add(dU);
            DbContext.SaveChanges();

            UploadedData ud = sut.FileRead();

            // Assert
            Assert.NotNull(ud);
            Assert.AreEqual(dU.id, ud.Id);
            Assert.AreEqual(dU.checksum, ud.Checksum);
            Assert.AreEqual(dU.extension, ud.Extension);
            Assert.AreEqual(dU.current_file, ud.CurrentFile);
            Assert.AreEqual(dU.uploader_id, ud.UploaderId);
            Assert.AreEqual(dU.uploader_type, ud.UploaderType);
            Assert.AreEqual(dU.file_location, ud.FileLocation);
            Assert.AreEqual(dU.file_name, ud.FileName);
            //Assert.AreEqual(dU.local, ud.);
        }
Пример #7
0
        public async Task <IActionResult> UploadUploadedDataPdf(UploadedDataPDFUploadModel pdfUploadModel)
        {
            try
            {
                var core = _core.GetCore();

                var saveFolder = Path.Combine(await core.Result.GetSdkSetting(Settings.fileLocationPdf), Path.Combine("pdfFiles"));

                Directory.CreateDirectory(saveFolder);

                string fileName = $"ItemCase_{pdfUploadModel.ItemCaseId}_{DateTime.Now.Ticks}.pdf";

                if (pdfUploadModel.File.Length > 0)
                {
                    using (var stream = new FileStream(Path.Combine(saveFolder, fileName), FileMode.Create))
                    {
                        await pdfUploadModel.File.CopyToAsync(stream);
                    }
                }
                if (core.Result.GetSdkSetting(Settings.swiftEnabled).ToString().ToLower() == "true")
                {
                    await core.Result.PutFileToStorageSystem(Path.Combine(saveFolder, fileName), fileName);
                }

                UploadedData uploadedData = new UploadedData();
                uploadedData.FileLocation = saveFolder;
                uploadedData.FileName     = fileName;
                uploadedData.ItemCaseId   = pdfUploadModel.ItemCaseId;

                await uploadedData.Create(_dbContext);


                return(new OkResult());
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
                _core.LogException(e.Message);
                return(new BadRequestResult());
            }
        }
Пример #8
0
        public async Task <OperationResult> Update(UploadedDataModel uploadedDataModel)
        {
            UploadedData uploadedData =
                await _dbContext.UploadedDatas.SingleOrDefaultAsync(x => x.Id == uploadedDataModel.Id);

            if (uploadedData != null)
            {
                uploadedData.Checksum     = uploadedDataModel.Checksum;
                uploadedData.Extension    = uploadedDataModel.Extension;
                uploadedData.CurrentFile  = uploadedDataModel.CurrentFile;
                uploadedData.FileLocation = uploadedDataModel.FileLocation;
                uploadedData.FileName     = uploadedDataModel.FileName;
                uploadedData.UploaderType = uploadedDataModel.UploaderType;
                uploadedData.ItemCaseId   = uploadedDataModel.ItemCaseId;

                await uploadedData.Update(_dbContext);

                return(new OperationResult(true));
            }
            return(new OperationResult(false));
        }
Пример #9
0
        public void SQL_File_FileRead_doesFileRead()
        {
            uploaded_data ud = new uploaded_data();

            ud.checksum      = "checksum1";
            ud.extension     = "extension";
            ud.current_file  = "currentFile1";
            ud.uploader_id   = 223;
            ud.uploader_type = "uploader_type";
            ud.file_location = "file_location";
            ud.file_name     = "fileName";
            //ud.id = 111;

            ud.workflow_state = Constants.WorkflowStates.PreCreated;



            DbContext.uploaded_data.Add(ud);
            DbContext.SaveChanges();


            // Act
            UploadedData Ud = sut.FileRead();


            // Assert

            Assert.NotNull(ud);
            Assert.NotNull(Ud);
            Assert.AreEqual(Ud.Checksum, ud.checksum);
            Assert.AreEqual(Ud.Extension, ud.extension);
            Assert.AreEqual(Ud.CurrentFile, ud.current_file);
            Assert.AreEqual(Ud.UploaderId, ud.uploader_id);
            Assert.AreEqual(Ud.UploaderType, ud.uploader_type);
            Assert.AreEqual(Ud.FileLocation, ud.file_location);
            Assert.AreEqual(Ud.FileName, ud.file_name);
            Assert.AreEqual(Ud.Id, ud.id);
            Assert.AreEqual(Constants.WorkflowStates.PreCreated, ud.workflow_state);
        }
Пример #10
0
        public async Task <IActionResult> Upload()
        {
            if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType))
            {
                return(BadRequest($"Expected a multipart request, but got {Request.ContentType}"));
            }

            // Used to accumulate all the form url encoded key value pairs in the
            // request.
            var    formAccumulator = new KeyValueAccumulator();
            string targetFilePath  = null;

            var boundary = MultipartRequestHelper.GetBoundary(
                MediaTypeHeaderValue.Parse(Request.ContentType),
                _defaultFormOptions.MultipartBoundaryLengthLimit);
            var reader = new MultipartReader(boundary, HttpContext.Request.Body);

            var section = await reader.ReadNextSectionAsync();

            while (section != null)
            {
                ContentDispositionHeaderValue contentDisposition;
                var hasContentDispositionHeader = ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out contentDisposition);

                if (hasContentDispositionHeader)
                {
                    if (MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
                    {
                        targetFilePath = Path.GetTempFileName();
                        using (var targetStream = System.IO.File.Create(targetFilePath))
                        {
                            await section.Body.CopyToAsync(targetStream);

                            _logger.LogInformation($"Copied the uploaded file '{targetFilePath}'");
                        }
                    }
                    else if (MultipartRequestHelper.HasFormDataContentDisposition(contentDisposition))
                    {
                        // Content-Disposition: form-data; name="key"
                        //
                        // value

                        // Do not limit the key name length here because the
                        // multipart headers length limit is already in effect.
                        var key      = HeaderUtilities.RemoveQuotes(contentDisposition.Name);
                        var encoding = GetEncoding(section);
                        using (var streamReader = new StreamReader(
                                   section.Body,
                                   encoding,
                                   detectEncodingFromByteOrderMarks: true,
                                   bufferSize: 1024,
                                   leaveOpen: true))
                        {
                            // The value length limit is enforced by MultipartBodyLengthLimit
                            var value = await streamReader.ReadToEndAsync();

                            if (String.Equals(value, "undefined", StringComparison.OrdinalIgnoreCase))
                            {
                                value = String.Empty;
                            }
                            formAccumulator.Append(key, value);

                            if (formAccumulator.ValueCount > _defaultFormOptions.ValueCountLimit)
                            {
                                throw new InvalidDataException($"Form key count limit {_defaultFormOptions.ValueCountLimit} exceeded.");
                            }
                        }
                    }
                }

                // Drains any remaining section body that has not been consumed and
                // reads the headers for the next section.
                section = await reader.ReadNextSectionAsync();
            }

            // Bind form data to a model
            var user = new User();
            var formValueProvider = new FormValueProvider(
                BindingSource.Form,
                new FormCollection(formAccumulator.GetResults()),
                CultureInfo.CurrentCulture);

            var bindingSuccessful = await TryUpdateModelAsync(user, prefix : "",
                                                              valueProvider : formValueProvider);

            if (!bindingSuccessful)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
            }

            var uploadedData = new UploadedData()
            {
                Name     = user.Name,
                Age      = user.Age,
                Zipcode  = user.Zipcode,
                FilePath = targetFilePath
            };

            return(Json(uploadedData));
        }
        public void CaseTemplateUploadedData_Delete_DoesSetWorkflowStateToRemoved()
        {
            //Arrange

            short shortMin = Int16.MinValue;
            short shortMax = Int16.MaxValue;

            Random rnd        = new Random();
            bool   randomBool = rnd.Next(0, 2) > 0;

            CaseTemplate caseTemplate = new CaseTemplate();

            caseTemplate.Approvable          = randomBool;
            caseTemplate.Body                = Guid.NewGuid().ToString();
            caseTemplate.Title               = Guid.NewGuid().ToString();
            caseTemplate.AlwaysShow          = randomBool;
            caseTemplate.EndAt               = DateTime.Now;
            caseTemplate.PdfTitle            = Guid.NewGuid().ToString();
            caseTemplate.StartAt             = DateTime.Now;
            caseTemplate.DescriptionFolderId = rnd.Next(1, 200);
            caseTemplate.RetractIfApproved   = randomBool;
            caseTemplate.Create(DbContext);

            UploadedData uploadedData = new UploadedData();

            uploadedData.Checksum         = Guid.NewGuid().ToString();
            uploadedData.Extension        = Guid.NewGuid().ToString();
            uploadedData.Local            = (short)rnd.Next(shortMin, shortMax);
            uploadedData.CurrentFile      = Guid.NewGuid().ToString();
            uploadedData.ExpirationDate   = DateTime.Now;
            uploadedData.FileLocation     = Guid.NewGuid().ToString();
            uploadedData.FileName         = Guid.NewGuid().ToString();
            uploadedData.UploaderType     = Guid.NewGuid().ToString();
            uploadedData.OriginalFileName = Guid.NewGuid().ToString();
            uploadedData.Create(DbContext);

            CaseTemplateUploadedData caseTemplateUploadedData = new CaseTemplateUploadedData();

            caseTemplateUploadedData.Approvable        = randomBool;
            caseTemplateUploadedData.Title             = Guid.NewGuid().ToString();
            caseTemplateUploadedData.CaseTemplateId    = caseTemplate.Id;
            caseTemplateUploadedData.RetractIfApproved = randomBool;
            caseTemplateUploadedData.UploadedDataId    = uploadedData.Id;
            caseTemplateUploadedData.Create(DbContext);

            //Act

            DateTime?oldUpdatedAt = caseTemplateUploadedData.UpdatedAt;

            caseTemplateUploadedData.Delete(DbContext);

            List <CaseTemplateUploadedData>        dbCaseTemplateUploadedDatas        = DbContext.CaseTemplateUploadedDatas.AsNoTracking().ToList();
            List <CaseTemplateUploadedDataVersion> dbCaseTemplateUploadedDataVersions = DbContext.CaseTemplateUploadedDataVersions.AsNoTracking().ToList();

            //Assert
            Assert.NotNull(dbCaseTemplateUploadedDatas);
            Assert.NotNull(dbCaseTemplateUploadedDataVersions);

            Assert.AreEqual(1, dbCaseTemplateUploadedDatas.Count);
            Assert.AreEqual(2, dbCaseTemplateUploadedDataVersions.Count);


            Assert.AreEqual(caseTemplateUploadedData.Id, dbCaseTemplateUploadedDatas[0].Id);
            Assert.AreEqual(caseTemplateUploadedData.Version, dbCaseTemplateUploadedDatas[0].Version);
            Assert.AreEqual(caseTemplateUploadedData.CreatedAt.ToString(), dbCaseTemplateUploadedDatas[0].CreatedAt.ToString());
            Assert.AreEqual(caseTemplateUploadedData.UpdatedAt.ToString(), dbCaseTemplateUploadedDatas[0].UpdatedAt.ToString());
            Assert.AreEqual(caseTemplateUploadedData.CreatedByUserId, dbCaseTemplateUploadedDatas[0].CreatedByUserId);
            Assert.AreEqual(caseTemplateUploadedData.UpdatedByUserId, dbCaseTemplateUploadedDatas[0].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Removed, dbCaseTemplateUploadedDatas[0].WorkflowState);
            Assert.AreEqual(caseTemplateUploadedData.Approvable, dbCaseTemplateUploadedDatas[0].Approvable);
            Assert.AreEqual(caseTemplateUploadedData.Title, dbCaseTemplateUploadedDatas[0].Title);
            Assert.AreEqual(caseTemplate.Id, dbCaseTemplateUploadedDatas[0].CaseTemplateId);
            Assert.AreEqual(uploadedData.Id, dbCaseTemplateUploadedDatas[0].UploadedDataId);
            Assert.AreEqual(caseTemplateUploadedData.RetractIfApproved, dbCaseTemplateUploadedDatas[0].RetractIfApproved);

            //Old Version
            Assert.AreEqual(caseTemplateUploadedData.Id, dbCaseTemplateUploadedDataVersions[0].Id);
            Assert.AreEqual(1, dbCaseTemplateUploadedDataVersions[0].Version);
            Assert.AreEqual(caseTemplateUploadedData.CreatedAt.ToString(), dbCaseTemplateUploadedDataVersions[0].CreatedAt.ToString());
            Assert.AreEqual(oldUpdatedAt.ToString(), dbCaseTemplateUploadedDataVersions[0].UpdatedAt.ToString());
            Assert.AreEqual(caseTemplateUploadedData.CreatedByUserId, dbCaseTemplateUploadedDataVersions[0].CreatedByUserId);
            Assert.AreEqual(caseTemplateUploadedData.UpdatedByUserId, dbCaseTemplateUploadedDataVersions[0].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Created, dbCaseTemplateUploadedDataVersions[0].WorkflowState);
            Assert.AreEqual(caseTemplateUploadedData.Approvable, dbCaseTemplateUploadedDataVersions[0].Approvable);
            Assert.AreEqual(caseTemplateUploadedData.Title, dbCaseTemplateUploadedDataVersions[0].Title);
            Assert.AreEqual(caseTemplate.Id, dbCaseTemplateUploadedDataVersions[0].CaseTemplateId);
            Assert.AreEqual(uploadedData.Id, dbCaseTemplateUploadedDataVersions[0].UploadedDataId);
            Assert.AreEqual(caseTemplateUploadedData.RetractIfApproved, dbCaseTemplateUploadedDataVersions[0].RetractIfApproved);

            //New Version
            Assert.AreEqual(caseTemplateUploadedData.Id, dbCaseTemplateUploadedDataVersions[1].CaseTemplateUploadedDataId);
            Assert.AreEqual(2, dbCaseTemplateUploadedDataVersions[1].Version);
            Assert.AreEqual(caseTemplateUploadedData.CreatedAt.ToString(), dbCaseTemplateUploadedDataVersions[1].CreatedAt.ToString());
            Assert.AreEqual(caseTemplateUploadedData.UpdatedAt.ToString(), dbCaseTemplateUploadedDataVersions[1].UpdatedAt.ToString());
            Assert.AreEqual(caseTemplateUploadedData.CreatedByUserId, dbCaseTemplateUploadedDataVersions[1].CreatedByUserId);
            Assert.AreEqual(caseTemplateUploadedData.UpdatedByUserId, dbCaseTemplateUploadedDataVersions[1].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Removed, dbCaseTemplateUploadedDataVersions[1].WorkflowState);
            Assert.AreEqual(caseTemplateUploadedData.Approvable, dbCaseTemplateUploadedDataVersions[1].Approvable);
            Assert.AreEqual(caseTemplateUploadedData.Title, dbCaseTemplateUploadedDataVersions[1].Title);
            Assert.AreEqual(caseTemplate.Id, dbCaseTemplateUploadedDataVersions[1].CaseTemplateId);
            Assert.AreEqual(uploadedData.Id, dbCaseTemplateUploadedDataVersions[1].UploadedDataId);
            Assert.AreEqual(caseTemplateUploadedData.RetractIfApproved, dbCaseTemplateUploadedDataVersions[1].RetractIfApproved);
        }
Пример #12
0
        public IActionResult Index(UploadedDataViewModel model)
        {
            if (ModelState.IsValid)
            {
                string uniqueFileName = null;
                string filePath       = null;

                // If the Photo property on the incoming model object is not null, then the user
                // has selected an image to upload.
                if (model.Base64 != null)
                {
                    try
                    {
                        // The image must be uploaded to the images folder in wwwroot
                        // To get the path of the wwwroot folder we are using the inject
                        // HostingEnvironment service provided by ASP.NET Core
                        string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "images\\" + model.Name);

                        //if the the directory doesn't exist
                        Directory.CreateDirectory(uploadsFolder);

                        // To make sure the file name is unique we are appending a new
                        // GUID value and and an underscore to the file name
                        uniqueFileName = Guid.NewGuid().ToString() + "_PostCardImage.png";
                        filePath       = Path.Combine(uploadsFolder, uniqueFileName);

                        byte[] imgBytes = Convert.FromBase64String(model.Base64);
                        using (var imageFile = new FileStream(filePath, FileMode.Create))
                        {
                            imageFile.Write(imgBytes, 0, imgBytes.Length);
                            imageFile.Flush();
                        }

                        //Saves the provided information on the database.
                        //We store the filepath to delete the image from the server
                        //at the user's request.
                        UploadedData newDataEntry = new UploadedData
                        {
                            Name      = model.Name,
                            Email     = model.Email,
                            SentDate  = DateTime.Now,
                            ImageName = uniqueFileName,
                            ImagePath = filePath
                        };
                        _uploadedDataRespository.UploadData(newDataEntry);


                        //Sends the email with the select image as an attachement if no errors occur above
                        var          fromAddress  = new MailAddress("*****@*****.**");
                        var          toAddress    = new MailAddress(model.Email);
                        const string fromPassword = "******";
                        string       subject      = "";
                        if (model.Subject != "")
                        {
                            subject = model.Subject;
                        }
                        else
                        {
                            subject = "Post Card - Image(s)";
                        }
                        string body = model.EmailBody;

                        var smtp = new SmtpClient
                        {
                            Host                  = "smtp.gmail.com",
                            Port                  = 587,
                            EnableSsl             = true,
                            DeliveryMethod        = SmtpDeliveryMethod.Network,
                            UseDefaultCredentials = false,
                            Credentials           = new NetworkCredential(fromAddress.Address, fromPassword)
                        };
                        Attachment attachment = new Attachment(filePath);
                        using (MailMessage message = new MailMessage(fromAddress, toAddress)
                        {
                            Subject = subject,
                            Body = body
                        })
                        {
                            message.Attachments.Add(attachment);
                            smtp.Send(message);
                        }

                        ViewBag.CssClassName  = "text-success";
                        ViewBag.ServerMessage = "Image successfully sent.";
                        return(View("Index"));
                    }
                    catch (Exception ex)
                    {
                        //deletes the uploaded file if an error occurs
                        if (System.IO.File.Exists(filePath))
                        {
                            System.IO.File.Delete(filePath);
                        }
                        ViewBag.TextClass = "text-danger";
                        ViewBag.Message   = ex.Message;
                    }
                }
                else
                {
                    ViewBag.TextClass = "text-danger";
                    ViewBag.Message   = "Please select an image.";
                }
                return(View());
            }
            else
            {
                ViewBag.TextClass = "text-danger";
                ViewBag.Message   = "The form validation failed.";
            }

            return(View());
        }
Пример #13
0
        public async Task <IActionResult> Upload()
        {
            var multipartBoundary = Request.GetMultipartBoundary();

            if (string.IsNullOrEmpty(multipartBoundary))
            {
                return(BadRequest($"Expected a multipart request, but got '{Request.ContentType}'."));
            }

            // Used to accumulate all the form url encoded key value pairs in the request.
            var    formAccumulator = new KeyValueAccumulator();
            string targetFilePath  = null;

            var reader = new MultipartReader(multipartBoundary, HttpContext.Request.Body);

            var section = await reader.ReadNextSectionAsync();

            while (section != null)
            {
                // This will reparse the content disposition header
                // Create a FileMultipartSection using it's constructor to pass
                // in a cached disposition header
                var fileSection = section.AsFileSection();
                if (fileSection != null)
                {
                    var fileName = fileSection.FileName;

                    targetFilePath = Path.Combine(_hostingEnvironment.ContentRootPath, Guid.NewGuid().ToString());
                    using (var targetStream = System.IO.File.Create(targetFilePath))
                    {
                        await fileSection.FileStream.CopyToAsync(targetStream);

                        _logger.LogInformation($"Copied the uploaded file '{fileName}' to '{targetFilePath}'.");
                    }
                }
                else
                {
                    var formSection = section.AsFormDataSection();
                    if (formSection != null)
                    {
                        var name  = formSection.Name;
                        var value = await formSection.GetValueAsync();

                        formAccumulator.Append(name, value);

                        if (formAccumulator.ValueCount > FormReader.DefaultValueCountLimit)
                        {
                            throw new InvalidDataException(
                                      $"Form key count limit {FormReader.DefaultValueCountLimit} exceeded.");
                        }
                    }
                }

                // Drains any remaining section body that has not been consumed and
                // reads the headers for the next section.
                section = await reader.ReadNextSectionAsync();
            }

            // Bind form data to a model
            var user = new User();
            var formValueProvider = new FormValueProvider(
                BindingSource.Form,
                new FormCollection(formAccumulator.GetResults()),
                CultureInfo.CurrentCulture);

            var bindingSuccessful = await TryUpdateModelAsync(user, prefix : "", valueProvider : formValueProvider);

            if (!bindingSuccessful)
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
            }

            var uploadedData = new UploadedData()
            {
                Name     = user.Name,
                Age      = user.Age,
                Zipcode  = user.Zipcode,
                FilePath = targetFilePath
            };

            return(Json(uploadedData));
        }
Пример #14
0
        public void UploadedData_Update_DoesUpdate()
        {
            //Arrange

            Random rnd = new Random();

            short minValue = Int16.MinValue;
            short maxValue = Int16.MaxValue;

            UploadedData uploadedData = new UploadedData();

            uploadedData.Checksum         = Guid.NewGuid().ToString();
            uploadedData.Extension        = Guid.NewGuid().ToString();
            uploadedData.CurrentFile      = Guid.NewGuid().ToString();
            uploadedData.FileLocation     = Guid.NewGuid().ToString();
            uploadedData.FileName         = Guid.NewGuid().ToString();
            uploadedData.UploaderType     = Guid.NewGuid().ToString();
            uploadedData.Local            = (short)rnd.Next(minValue, maxValue);
            uploadedData.ExpirationDate   = DateTime.Now;
            uploadedData.OriginalFileName = Guid.NewGuid().ToString();
            uploadedData.Create(DbContext);


            //Act

            DateTime?oldUpdatedAt        = uploadedData.UpdatedAt;
            string   oldChecksum         = uploadedData.Checksum;
            string   oldExtension        = uploadedData.Extension;
            string   oldCurrentFIle      = uploadedData.CurrentFile;
            string   oldFileLocation     = uploadedData.FileLocation;
            string   oldFileName         = uploadedData.FileName;
            string   oldUploaderType     = uploadedData.UploaderType;
            int?     oldLocal            = uploadedData.Local;
            DateTime?oldExpirationDate   = uploadedData.ExpirationDate;
            string   oldOriginalFileName = uploadedData.OriginalFileName;

            uploadedData.Checksum         = Guid.NewGuid().ToString();
            uploadedData.Extension        = Guid.NewGuid().ToString();
            uploadedData.CurrentFile      = Guid.NewGuid().ToString();
            uploadedData.FileLocation     = Guid.NewGuid().ToString();
            uploadedData.FileName         = Guid.NewGuid().ToString();
            uploadedData.UploaderType     = Guid.NewGuid().ToString();
            uploadedData.Local            = (short)rnd.Next(minValue, maxValue);
            uploadedData.ExpirationDate   = DateTime.Now;
            uploadedData.OriginalFileName = Guid.NewGuid().ToString();

            uploadedData.Update(DbContext);

            List <UploadedData>        dbUploadedDatas        = DbContext.UploadedDatas.AsNoTracking().ToList();
            List <UploadedDataVersion> dbUploadedDataVersions = DbContext.UploadedDataVersions.AsNoTracking().ToList();

            //Assert
            Assert.NotNull(dbUploadedDatas);
            Assert.NotNull(dbUploadedDataVersions);

            Assert.AreEqual(1, dbUploadedDatas.Count);
            Assert.AreEqual(2, dbUploadedDataVersions.Count);


            Assert.AreEqual(uploadedData.Id, dbUploadedDatas[0].Id);
            Assert.AreEqual(uploadedData.Version, dbUploadedDatas[0].Version);
            Assert.AreEqual(uploadedData.CreatedAt.ToString(), dbUploadedDatas[0].CreatedAt.ToString());
            Assert.AreEqual(uploadedData.UpdatedAt.ToString(), dbUploadedDatas[0].UpdatedAt.ToString());
            Assert.AreEqual(uploadedData.CreatedByUserId, dbUploadedDatas[0].CreatedByUserId);
            Assert.AreEqual(uploadedData.UpdatedByUserId, dbUploadedDatas[0].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Created, dbUploadedDatas[0].WorkflowState);
            Assert.AreEqual(uploadedData.Checksum, dbUploadedDatas[0].Checksum);
            Assert.AreEqual(uploadedData.Extension, dbUploadedDatas[0].Extension);
            Assert.AreEqual(uploadedData.Local, dbUploadedDatas[0].Local);
            Assert.AreEqual(uploadedData.CurrentFile, dbUploadedDatas[0].CurrentFile);
            Assert.AreEqual(uploadedData.ExpirationDate.ToString(), dbUploadedDatas[0].ExpirationDate.ToString());
            Assert.AreEqual(uploadedData.FileLocation, dbUploadedDatas[0].FileLocation);
            Assert.AreEqual(uploadedData.FileName, dbUploadedDatas[0].FileName);
            Assert.AreEqual(uploadedData.UploaderType, dbUploadedDatas[0].UploaderType);
            Assert.AreEqual(uploadedData.OriginalFileName, dbUploadedDatas[0].OriginalFileName);

            //Old Version
            Assert.AreEqual(uploadedData.Id, dbUploadedDataVersions[0].UploadedDataId);
            Assert.AreEqual(1, dbUploadedDataVersions[0].Version);
            Assert.AreEqual(uploadedData.CreatedAt.ToString(), dbUploadedDataVersions[0].CreatedAt.ToString());
            Assert.AreEqual(oldUpdatedAt.ToString(), dbUploadedDataVersions[0].UpdatedAt.ToString());
            Assert.AreEqual(uploadedData.CreatedByUserId, dbUploadedDataVersions[0].CreatedByUserId);
            Assert.AreEqual(uploadedData.UpdatedByUserId, dbUploadedDataVersions[0].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Created, dbUploadedDataVersions[0].WorkflowState);
            Assert.AreEqual(oldChecksum, dbUploadedDataVersions[0].Checksum);
            Assert.AreEqual(oldExtension, dbUploadedDataVersions[0].Extension);
            Assert.AreEqual(oldLocal, dbUploadedDataVersions[0].Local);
            Assert.AreEqual(oldCurrentFIle, dbUploadedDataVersions[0].CurrentFile);
            Assert.AreEqual(oldExpirationDate.ToString(), dbUploadedDataVersions[0].ExpirationDate.ToString());
            Assert.AreEqual(oldFileLocation, dbUploadedDataVersions[0].FileLocation);
            Assert.AreEqual(oldFileName, dbUploadedDataVersions[0].FileName);
            Assert.AreEqual(oldUploaderType, dbUploadedDataVersions[0].UploaderType);
            Assert.AreEqual(oldOriginalFileName, dbUploadedDataVersions[0].OriginalFileName);

            //New Version
            Assert.AreEqual(uploadedData.Id, dbUploadedDataVersions[1].UploadedDataId);
            Assert.AreEqual(2, dbUploadedDataVersions[1].Version);
            Assert.AreEqual(uploadedData.CreatedAt.ToString(), dbUploadedDataVersions[1].CreatedAt.ToString());
            Assert.AreEqual(uploadedData.UpdatedAt.ToString(), dbUploadedDataVersions[1].UpdatedAt.ToString());
            Assert.AreEqual(uploadedData.CreatedByUserId, dbUploadedDataVersions[1].CreatedByUserId);
            Assert.AreEqual(uploadedData.UpdatedByUserId, dbUploadedDataVersions[1].UpdatedByUserId);
            Assert.AreEqual(Constants.WorkflowStates.Created, dbUploadedDataVersions[1].WorkflowState);
            Assert.AreEqual(uploadedData.Checksum, dbUploadedDataVersions[1].Checksum);
            Assert.AreEqual(uploadedData.Extension, dbUploadedDataVersions[1].Extension);
            Assert.AreEqual(uploadedData.Local, dbUploadedDataVersions[1].Local);
            Assert.AreEqual(uploadedData.CurrentFile, dbUploadedDataVersions[1].CurrentFile);
            Assert.AreEqual(uploadedData.ExpirationDate.ToString(), dbUploadedDataVersions[1].ExpirationDate.ToString());
            Assert.AreEqual(uploadedData.FileLocation, dbUploadedDataVersions[1].FileLocation);
            Assert.AreEqual(uploadedData.FileName, dbUploadedDataVersions[1].FileName);
            Assert.AreEqual(uploadedData.UploaderType, dbUploadedDataVersions[1].UploaderType);
            Assert.AreEqual(uploadedData.OriginalFileName, dbUploadedDataVersions[1].OriginalFileName);
        }
Пример #15
0
        //[DisableFormValueModelBinding]
        //[ValidateAntiForgeryToken]
        //public async Task<IActionResult> Upload()
        public async Task <IActionResult> Upload()
        {
            if (!MultipartRequestHelper.IsMultipartContentType(Request.ContentType))
            {
                return(BadRequest($"Expected a multipart request, but got '{Request.ContentType}'."));
            }

            // Used to accumulate all the form url encoded key value pairs in the request.
            var    formAccumulator = new KeyValueAccumulator();
            string targetFilePath  = null;

            var boundary = MultipartRequestHelper.GetBoundary(
                MediaTypeHeaderValue.Parse(Request.ContentType), _defaultFormOptions.MultipartBoundaryLengthLimit);
            var reader = new MultipartReader(boundary, HttpContext.Request.Body);

            var section = await reader.ReadNextSectionAsync();

            while (section != null)
            {
                ContentDispositionHeaderValue contentDisposition;
                ContentDispositionHeaderValue.TryParse(section.ContentDisposition, out contentDisposition);

                if (MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
                {
                    var name     = HeaderUtilities.RemoveQuotes(contentDisposition.Name) ?? string.Empty;
                    var fileName = HeaderUtilities.RemoveQuotes(contentDisposition.FileName) ?? string.Empty;

                    // Here the uploaded file is being copied to local disk but you can also for example, copy the
                    // stream directly to let's say Azure blob storage
                    targetFilePath = Path.Combine(_hostingEnvironment.ContentRootPath, Guid.NewGuid().ToString());
                    using (var targetStream = System.IO.File.Create(targetFilePath))
                    {
                        await section.Body.CopyToAsync(targetStream);

                        _logger.LogInformation($"Copied the uploaded file '{fileName}' to '{targetFilePath}'.");
                    }
                }
                else if (MultipartRequestHelper.HasFormDataContentDisposition(contentDisposition))
                {
                    // Content-Disposition: form-data; name="key"
                    //
                    // value

                    // Do not limit the key name length here because the mulipart headers length
                    // limit is already in effect.
                    var key = HeaderUtilities.RemoveQuotes(contentDisposition.Name);
                    MediaTypeHeaderValue mediaType;
                    MediaTypeHeaderValue.TryParse(section.ContentType, out mediaType);
                    var encoding = FilterEncoding(mediaType?.Encoding);
                    using (var streamReader = new StreamReader(
                               section.Body,
                               encoding,
                               detectEncodingFromByteOrderMarks: true,
                               bufferSize: 1024,
                               leaveOpen: true))
                    {
                        // The value length limit is enforced by MultipartBodyLengthLimit
                        var value = await streamReader.ReadToEndAsync();

                        formAccumulator.Append(key, value);

                        if (formAccumulator.ValueCount > _defaultFormOptions.ValueCountLimit)
                        {
                            throw new InvalidDataException(
                                      $"Form key count limit {_defaultFormOptions.ValueCountLimit} exceeded.");
                        }
                    }
                }

                // Drains any remaining section body that has not been consumed and
                // reads the headers for the next section.
                section = await reader.ReadNextSectionAsync();
            }

            // Bind form data to a model
            //var user = new User();
            //var formValueProvider = new FormValueProvider(
            //    BindingSource.Form,
            //    new FormCollection(formAccumulator.GetResults()),
            //    CultureInfo.CurrentCulture);

            //var bindingSuccessful = await TryUpdateModelAsync(user, prefix: "", valueProvider: formValueProvider);
            //if (!bindingSuccessful)
            //{
            //    if (!ModelState.IsValid)
            //    {
            //        return BadRequest(ModelState);
            //    }
            //}

            var uploadedData = new UploadedData()
            {
                //Name = user.Name,
                FilePath = targetFilePath
            };

            return(Ok(uploadedData));
        }
        public async Task UploadedData_Update_DoesUpdate()
        {
            //Arrange
            ItemList itemList = new ItemList
            {
                Name = Guid.NewGuid().ToString()
            };

            await itemList.Create(DbContext);

            Item item = new Item
            {
                Name        = Guid.NewGuid().ToString(),
                Description = Guid.NewGuid().ToString(),
                Enabled     = true,
                ItemListId  = itemList.Id,
            };

            await item.Create(DbContext);

            ItemCase itemCase = new ItemCase
            {
                MicrotingSdkSiteId  = 24,
                MicrotingSdkCaseId  = 34,
                MicrotingSdkeFormId = 234,
                Status = 66,
                ItemId = item.Id,
            };

            await itemCase.Create(DbContext);

            UploadedData uploadedData = new UploadedData
            {
                ItemCaseId   = itemCase.Id,
                Checksum     = Guid.NewGuid().ToString(),
                Extension    = Guid.NewGuid().ToString(),
                CurrentFile  = Guid.NewGuid().ToString(),
                UploaderType = Guid.NewGuid().ToString(),
                FileLocation = Guid.NewGuid().ToString(),
                FileName     = Guid.NewGuid().ToString()
            };
            await uploadedData.Create(DbContext);

            string newCheckSum     = Guid.NewGuid().ToString();
            string newExtension    = Guid.NewGuid().ToString();
            string newCurrentFile  = Guid.NewGuid().ToString();
            string newUploaderType = Guid.NewGuid().ToString();
            string newFileLocation = Guid.NewGuid().ToString();
            string newFileName     = Guid.NewGuid().ToString();

            uploadedData.Checksum     = newCheckSum;
            uploadedData.Extension    = newExtension;
            uploadedData.CurrentFile  = newCurrentFile;
            uploadedData.UploaderType = newUploaderType;
            uploadedData.FileLocation = newFileLocation;
            uploadedData.FileName     = newFileName;
            //Act
            await uploadedData.Update(DbContext);

            UploadedData               dbUploadedData          = DbContext.UploadedDatas.AsNoTracking().First();
            List <UploadedData>        uploadedDataList        = DbContext.UploadedDatas.AsNoTracking().ToList();
            List <UploadedDataVersion> uploadedDataVersionList = DbContext.UploadedDataVersions.AsNoTracking().ToList();

            //Assert
            Assert.NotNull(dbUploadedData);

            Assert.AreEqual(1, uploadedDataList.Count);
            Assert.AreEqual(2, uploadedDataVersionList.Count);

            Assert.AreEqual(newCheckSum, dbUploadedData.Checksum);
            Assert.AreEqual(newExtension, dbUploadedData.Extension);
            Assert.AreEqual(newCurrentFile, dbUploadedData.CurrentFile);
            Assert.AreEqual(newUploaderType, dbUploadedData.UploaderType);
            Assert.AreEqual(newFileLocation, dbUploadedData.FileLocation);
            Assert.AreEqual(newFileName, dbUploadedData.FileName);
            Assert.AreEqual(uploadedData.ItemCaseId, dbUploadedData.ItemCaseId);
        }
Пример #17
0
        public static UploadedData CSVtoEntities(Stream fileStream)
        {
            int            rowNumber    = 0;
            UploadedData   uploadedData = new UploadedData();
            TransactionDto transaction;

            using (StreamReader sr = new StreamReader(fileStream))
            {
                decimal amount = 0;
                //skip header
                sr.ReadLine();
                Regex csvParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
                while (!sr.EndOfStream)
                {
                    rowNumber++;
                    transaction = new TransactionDto();
                    try
                    {
                        string[] rows = csvParser.Split(sr.ReadLine());
                        if (rows.Length == 4)
                        {
                            if (String.IsNullOrEmpty(rows[0]))
                            {
                                transaction.Message = "No Account provided. ";
                            }
                            else
                            {
                                transaction.Account = rows[0].Trim();
                            }

                            if (String.IsNullOrEmpty(rows[1]))
                            {
                                transaction.Message += "No Description provided. ";
                            }
                            else
                            {
                                transaction.Description = rows[1].Trim();
                            }

                            if (String.IsNullOrEmpty(rows[2]))
                            {
                                transaction.Message += "No Currency Code provided. ";
                            }
                            else
                            {
                                transaction.CurrencyCode = rows[2].Trim();
                            }

                            if (!CurrencyHelper.ValidateCurrency(rows[2]))
                            {
                                transaction.Message += "Non existing Currency Code provided. ";
                            }

                            if (String.IsNullOrEmpty(rows[3]) || !Decimal.TryParse(rows[3], out amount))
                            {
                                transaction.Message += "No Amount provided. ";
                            }
                            else
                            {
                                transaction.Amount = amount;
                            }

                            if (!transaction.IsSuccess)
                            {
                                transaction.Message += " at row: " + rowNumber;
                                uploadedData.FailedData.Add(transaction);
                            }
                            else
                            {
                                uploadedData.InsertData.Add(transaction);
                            }
                        }
                        else if (rows.Length < 4)
                        {
                            transaction.Message = "Missing data at row " + rowNumber;
                            uploadedData.FailedData.Add(transaction);
                        }
                        else
                        {
                            transaction.Message = "Invalid chars at row " + rowNumber;
                            uploadedData.FailedData.Add(transaction);
                        }
                    }
                    catch (Exception ex)
                    {
                        transaction.Message = ex.InnerException.Message + " At row " + rowNumber;
                        uploadedData.FailedData.Add(transaction);
                    }
                }
            }

            return(uploadedData);
        }