Esempio n. 1
0
        public async Task DeleteAsync(int id, SubmissionFile model)
        {
            var modelToDelete = await _context.SubmissionFiles.FirstOrDefaultAsync(u => u.Id == id);

            _context.SubmissionFiles.Remove(modelToDelete);
            await _context.SaveChangesAsync();
        }
Esempio n. 2
0
        public void SubmissionByAccessNumberFile_InvalidName()
        {
            SECApi api = new SECApi();

            IConfiguration config = GetConfiguration();

            string cik       = config.GetValue(typeof(string), "SEC_CIK_AAPL").ToString();
            string accessNum = config.GetValue(typeof(string), "SEC_CIK_AAPL_SUBMISSION_FOLDER_20170701").ToString();
            string fileName  = "2FA82DB1-8BFF-4363-B947-5A3BC70AA89D.xml";

            try
            {
                SubmissionFile file = api.ArchivesEdgarDataCIKSubmissionFile(cik, accessNum, fileName);
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError &&
                    ex.Response != null)
                {
                    var resp = (HttpWebResponse)ex.Response;
                    if (resp.StatusCode != HttpStatusCode.NotFound)
                    {
                        Assert.Fail(string.Format("Invalid error code returned - {0}", resp.StatusCode));
                    }
                }
                else
                {
                    Assert.Fail(string.Format("Invalid exception returned - {0}", ex.ToString()));
                }
            }
        }
Esempio n. 3
0
        public long EditAcceptenceForReviewer(long fileid, string attr)
        {
            try
            {
                using (LMJEntities db = new LMJEntities())
                {
                    SubmissionFile submissionfile = db.SubmissionFiles.Where(e => e.Id == fileid).FirstOrDefault();
                    if (attr == "isAcceptedforReview")
                    {
                        submissionfile.isAcceptedforReview = true;
                    }
                    if (attr == "isAcceptedforCopyEditing")
                    {
                        submissionfile.isAcceptedforCopyEditing = true;
                    }
                    if (attr == "isAcceptedforProduction")
                    {
                        submissionfile.isAcceptedforProduction = true;
                    }

                    submissionfile.isSubmission = false;
                    submissionfile.isRevision   = false;
                    submissionfile.isCopyedited = false;
                    db.SaveChanges();

                    return(fileid);
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        public async Task <IActionResult> EditResubFile(int id, [Bind("Id,SubmissionId,JournalFileTypeId,FileName,Description")] SubmissionFile submissionFile, IFormFile myfile)
        {
            if (id != submissionFile.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    submissionFile.FileName = await UserFile.UploadeNewFileAsync(submissionFile.FileName,
                                                                                 myfile, _environment.WebRootPath, Properties.Resources.Secured);


                    _context.Update(submissionFile);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SubmissionFileExists(submissionFile.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("ResubmissionFiles", "SubmissionFiles", new { /* routeValues, for example: */ sid = submissionFile.SubmissionId }));
            }
            ViewData["JournalFileTypeId"] = new SelectList(_context.JournalFileTypes, "Id", "Id", submissionFile.JournalFileTypeId);
            ViewData["SubmissionId"]      = new SelectList(_context.Submissions, "Id", "CoverLetter", submissionFile.SubmissionId);
            return(View(submissionFile));
        }
        public async Task <IActionResult> TechnicalCreate(int sid, [Bind("Id,SubmissionId,JournalFileTypeId,FileName,Description")] SubmissionFile submissionFile, IFormFile myfile)
        {
            var sub          = _context.Submissions.SingleOrDefault(a => a.Id == submissionFile.SubmissionId);
            var ManuscriptId = sub.ManuscriptId;
            var journalfile  = _context.JournalFileTypes.SingleOrDefault(a => a.Id == submissionFile.JournalFileTypeId);

            if (ModelState.IsValid)
            {
                if (submissionFile.Description != null)
                {
                    submissionFile.Description = submissionFile.Description.Replace("\n", "<br/>");
                }
                if (journalfile.FileTypeId == 4)
                {
                    submissionFile.FileName = await UserFile.UploadeNewFileAsync(submissionFile.FileName,
                                                                                 myfile, _environment.WebRootPath, Properties.Resources.PublicationFiles);
                }
                else
                {
                    submissionFile.FileName = await UserFile.UploadeNewFileAsync(submissionFile.FileName,
                                                                                 myfile, _environment.WebRootPath, Properties.Resources.Secured);
                }

                _context.Add(submissionFile);
                await _context.SaveChangesAsync();

                return(RedirectToAction("TechnicalEditorDetails", "Manuscripts", new { /* routeValues, for example: */ id = ManuscriptId }));
            }
            ViewData["JournalFileTypeId"] = new SelectList(_context.JournalFileTypes, "Id", "Id", submissionFile.JournalFileTypeId);
            ViewData["SubmissionId"]      = new SelectList(_context.Submissions, "Id", "CoverLetter", submissionFile.SubmissionId);
            return(View(submissionFile));
        }
Esempio n. 6
0
        public void SubmissionByAccessNumberFileZip_Success()
        {
            SECApi api = new SECApi();

            string cik       = ConfigurationManager.AppSettings["SEC_CIK_AAPL"];
            string accessNum = ConfigurationManager.AppSettings["SEC_CIK_AAPL_SUBMISSION_FOLDER"];
            string fileName  = ConfigurationManager.AppSettings["SEC_CIK_AAPL_10Q_FILE_ZIP"];

            SubmissionFile file = api.ArchivesEdgarDataCIKSubmissionFile(cik, accessNum, fileName);

            Assert.AreNotEqual(file, null, "Submission is NULL");
            Assert.AreEqual(file.Name, fileName, "Invalid file name");
            Assert.IsTrue(file.Content.Count > 0, "File content is empty");
        }
Esempio n. 7
0
        public void SubmissionByAccessNumberFileZip_Success()
        {
            SECApi api = new SECApi();

            IConfiguration config = GetConfiguration();

            string cik       = config.GetValue(typeof(string), "SEC_CIK_AAPL").ToString();
            string accessNum = config.GetValue(typeof(string), "SEC_CIK_AAPL_SUBMISSION_FOLDER_20170701").ToString();
            string fileName  = config.GetValue(typeof(string), "SEC_CIK_AAPL_10Q_FILE_ZIP").ToString();

            SubmissionFile file = api.ArchivesEdgarDataCIKSubmissionFile(cik, accessNum, fileName);

            Assert.AreNotEqual(file, null, "Submission is NULL");
            Assert.AreEqual(file.Name, fileName, "Invalid file name");
            Assert.IsTrue(file.Content.Count > 0, "File content is empty");
        }
Esempio n. 8
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            SubmissionFile = await _context.SubmissionFiles
                             .Include(s => s.Owner).FirstOrDefaultAsync(m => m.Id == id);

            if (SubmissionFile == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Esempio n. 9
0
        public void SubmissionByAccessNumberFile_InvalidName()
        {
            SECApi api = new SECApi();

            string cik       = ConfigurationManager.AppSettings["SEC_CIK_AAPL"];
            string accessNum = ConfigurationManager.AppSettings["SEC_CIK_AAPL_SUBMISSION_FOLDER"];
            string fileName  = "2FA82DB1-8BFF-4363-B947-5A3BC70AA89D.xml";

            try
            {
                SubmissionFile file = api.ArchivesEdgarDataCIKSubmissionFile(cik, accessNum, fileName);
            }
            catch (WebServiceException ex)
            {
                Assert.AreEqual(ex.IsAny400(), string.Format("Invalid error code returned - {0}", ex.ErrorCode));
            }
        }
Esempio n. 10
0
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            SubmissionFile = await _context.SubmissionFiles
                             .Include(s => s.Owner).FirstOrDefaultAsync(m => m.Id == id);

            if (SubmissionFile == null)
            {
                return(NotFound());
            }
            ViewData["SubmissionId"] = new SelectList(_context.Submissions, "Id", "Id");
            return(Page());
        }
Esempio n. 11
0
        public async Task <IActionResult> OnPostAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            SubmissionFile = await _context.SubmissionFiles.FindAsync(id);

            if (SubmissionFile != null)
            {
                _context.SubmissionFiles.Remove(SubmissionFile);
                await _context.SaveChangesAsync();
            }

            return(RedirectToPage("./Index"));
        }
Esempio n. 12
0
        private SubmissionFile LoadFromStorage(string regulatorCode, string companyCode, string filingName, string name)
        {
            SubmissionFile file = null;

            if (_storage != null)
            {
                List <byte> content = new List <byte>();
                EErrorCodes loadRes = _storage.Load(regulatorCode, companyCode, filingName, name, content);
                if (loadRes == EErrorCodes.Success)
                {
                    file         = new SubmissionFile(name);
                    file.Content = content;
                }
            }

            return(file);
        }
        public async Task <IActionResult> ResubmissionFiles([Bind("Id,SubmissionId,JournalFileTypeId,FileName,Description")] SubmissionFile submissionFile, IFormFile myfile)
        {
            if (ModelState.IsValid)
            {
                submissionFile.Description = submissionFile.Description.Replace("\n", "<br/>");
                submissionFile.FileName    = await UserFile.UploadeNewFileAsync(submissionFile.FileName,
                                                                                myfile, _environment.WebRootPath, Properties.Resources.Secured);


                _context.Add(submissionFile);
                await _context.SaveChangesAsync();

                return(RedirectToAction("ResubmissionFiles", "SubmissionFiles", new { /* routeValues, for example: */ sid = submissionFile.SubmissionId }));
            }
            ViewData["JournalFileTypeId"] = new SelectList(_context.JournalFileTypes, "Id", "Id", submissionFile.JournalFileTypeId);
            ViewData["SubmissionId"]      = new SelectList(_context.Submissions, "Id", "CoverLetter", submissionFile.SubmissionId);
            return(View(submissionFile));
        }
Esempio n. 14
0
        public SubmissionFile Get(long submissionId, bool isSubmission, bool isRevision, bool isCopyEdited)
        {
            try
            {
                SubmissionFile data = new SubmissionFile();

                using (LMJEntities db = new LMJEntities())
                {
                    data = db.SubmissionFiles.Where(e => e.SubmissionId == submissionId &&
                                                    e.isRevision == isRevision && e.isSubmission == isSubmission && e.isCopyedited == isCopyEdited &&
                                                    e.isDeleted == false).FirstOrDefault();
                }
                return(data);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Esempio n. 15
0
        public async Task <ActionResult> Upload(UploadCourseViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            if (!viewModel.CheckFileExtentions(viewModel.File.FileName))
            {
                return(View(viewModel));
            }

            var reader = new BinaryReader(viewModel.File.InputStream);
            var data   = reader.ReadBytes(viewModel.File.ContentLength);
            var path   = Server.MapPath("~/uploads/");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            viewModel.File.SaveAs(Path.Combine(path, viewModel.File.FileName));
            var urlBase    = ConfigurationManager.AppSettings["SiteUrlBase"];
            var fileUpload = new SubmissionFile
            {
                FileName      = viewModel.File.FileName,
                ContentType   = viewModel.File.ContentType,
                ContentLength = viewModel.File.ContentLength,
                ExternalUrl   = $"{urlBase}uploads/{viewModel.File.FileName}",
                Data          = data,
                SubmissionId  = viewModel.SubmissionId,
                CreateDate    = DateTime.UtcNow
            };

            var currentSubmission = await _context.Submissions.FirstOrDefaultAsync(i => i.Id == fileUpload.SubmissionId);

            currentSubmission.SubmissionFiles = new List <SubmissionFile>();
            currentSubmission.SubmissionFiles.Add(fileUpload);

            await _uploadService.AddAsync(fileUpload);

            return(RedirectToRoute("SubmissionDetails", new { submissionId = currentSubmission.Id }));
        }
Esempio n. 16
0
        public ISourceExtractResult ExtractFilingItems(ISourceExtractFilingItemsParams extractItemsParams)
        {
            SECSourceExtractResult            result = new SECSourceExtractResult();
            SECSourceExtractFilingItemsParams extractSECItemsParams = extractItemsParams as SECSourceExtractFilingItemsParams;

            if (extractSECItemsParams != null)
            {
                string cik = _dictionary.LookupRegulatorCompanyCode(extractSECItemsParams.RegulatorCode, extractSECItemsParams.CompanyCode); // TODO: lookup in dictionary
                if (!string.IsNullOrEmpty(cik))
                {
                    foreach (var item in extractSECItemsParams.Items)
                    {
                        SubmissionFile file = null;
                        if (!_extractFromStorage)
                        {
                            file = _secApi.ArchivesEdgarDataCIKSubmissionFile(cik, extractSECItemsParams.Filing.Name, item.Name);
                        }
                        else
                        {
                            file = LoadFromStorage(extractSECItemsParams.RegulatorCode, extractSECItemsParams.CompanyCode, extractSECItemsParams.Filing.Name, item.Name);
                        }
                        if (file != null)
                        {
                            SECSourceItem sourceItem = ToSourceItem(extractItemsParams.RegulatorCode, extractItemsParams.CompanyCode, extractSECItemsParams.Filing.Name, file);

                            result.Items.Add(sourceItem);
                        }
                    }

                    if (!_extractFromStorage)
                    {
                        PutToStorage(result.Items);
                    }
                }
            }

            return(result);
        }
Esempio n. 17
0
        public ISourceSubmissionsInfoResult GetSubmissionsInfo(ISourceSubmissionsInfoParams infoParams)
        {
            ISourceSubmissionsInfoResult result = new SECSourceSubmissionsInfoResult();

            SECSourceSubmissionsInfoParams secInfoParams = infoParams as SECSourceSubmissionsInfoParams;

            if (secInfoParams != null)
            {
                string cik = _dictionary.LookupRegulatorCompanyCode(infoParams.RegulatorCode, infoParams.CompanyCode); // TODO: lookup in dictionary
                // for each submission - extracting content and checking type
                int count = 0;
                foreach (var item in secInfoParams.Items)
                {
                    Submission submission = !_extractFromStorage?
                                            GetSubmissionFromApi(cik, item.Name) :
                                                GetSubmissionFromStorage(infoParams.RegulatorCode, infoParams.CompanyCode, item.Name);

                    if (submission != null)
                    {
                        try
                        {
                            // extracting txt index file
                            SubmissionFileInfo subFileInfo = submission.Files.FirstOrDefault(s => s.Name.Contains("-index.html"));
                            SubmissionFile     indexFile   = null;

                            if (subFileInfo != null)
                            {
                                indexFile = !_extractFromStorage?
                                            _secApi.ArchivesEdgarDataCIKSubmissionFile(cik, item.Name, subFileInfo.Name) :
                                                LoadFromStorage(infoParams.RegulatorCode, infoParams.CompanyCode, item.Name, subFileInfo.Name);
                            }

                            if (indexFile != null)
                            {
                                SECSourceSubmissionInfo submissionInfo = ExtractReportDetailsIndexHTML(indexFile);
                                if (submissionInfo != null && !string.IsNullOrEmpty(submissionInfo.Type))
                                {
                                    if (!_extractFromStorage)
                                    {
                                        PutToStorage(infoParams.RegulatorCode, infoParams.CompanyCode, submission.Name, indexFile);
                                    }

                                    submissionInfo.Name = item.Name;
                                    result.Submissions.Add(submissionInfo);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            result.AddError(new Error()
                            {
                                Code = EErrorCodes.ImporterError, Message = string.Format("Report'{0}', Error: {1}", item.Name, ex.Message)
                            });
                        }
                    }
                    else
                    {
                        result.Errors.Add(new Error()
                        {
                            Code = EErrorCodes.SubmissionNotFound, Type = EErrorType.Warning, Message = string.Format("Submission '{0}' was not found", item.Name)
                        });
                    }

                    ++count;
                }

                result.Success = true;
            }
            else
            {
                result.Success = false;
                result.Errors.Add(new Error()
                {
                    Code = EErrorCodes.InvalidSourceParams, Type = EErrorType.Error, Message = "Invalid parameter provided"
                });
            }

            return(result);
        }
Esempio n. 18
0
        private SECSourceItem ToSourceItem(string regulatorCode, string companyCode, string filingName, SubmissionFile file)
        {
            SECSourceItem result = new SECSourceItem();

            result.RegulatorCode = regulatorCode;
            result.CompanyCode   = companyCode;
            result.FilingName    = filingName;
            result.Name          = file.Name;
            result.Content       = file.Content;

            return(result);
        }
Esempio n. 19
0
        private void PutToStorage(string regulatorCode, string companyCode, string filingName, SubmissionFile file)
        {
            List <ISourceItem> items = new List <ISourceItem>();

            items.Add(ToSourceItem(regulatorCode, companyCode, filingName, file));
            PutToStorage(items);
        }
Esempio n. 20
0
        public ISourceExtractResult ExtractReports(ISourceExtractParams extractParams)
        {
            SECSourceExtractResult result = new SECSourceExtractResult();

            SECSourceExtractParams extractSECParams = extractParams as SECSourceExtractParams;

            if (extractSECParams != null)
            {
                string cik = _dictionary.LookupRegulatorCompanyCode(extractSECParams.RegulatorCode, extractSECParams.CompanyCode); // TODO: lookup in dictionary
                if (!string.IsNullOrEmpty(cik))
                {
                    foreach (var filing in extractSECParams.Items)
                    {
                        // getting list of files for each filing
                        Submission submission = _secApi.ArchivesEdgarDataCIKSubmission(cik, filing.Name);
                        if (submission != null)
                        {
                            foreach (var fileInfo in submission.Files)
                            {
                                // to speed up we need to extract only xml files and index headers file
                                if (Path.GetExtension(fileInfo.Name) == ".xml" || fileInfo.Name.Contains(".txt"))
                                {
                                    SubmissionFile file = _secApi.ArchivesEdgarDataCIKSubmissionFile(cik, filing.Name, fileInfo.Name);
                                    if (file != null)
                                    {
                                        SECSourceItem sourceItem = new SECSourceItem();
                                        sourceItem.Name          = fileInfo.Name;
                                        sourceItem.FilingName    = filing.Name;
                                        sourceItem.CompanyCode   = extractSECParams.CompanyCode;
                                        sourceItem.RegulatorCode = extractSECParams.RegulatorCode;
                                        sourceItem.Content       = file.Content;

                                        result.Items.Add(sourceItem);
                                    }
                                }
                            }

                            // saving all uploaded items to storage
                            PutToStorage(result.Items);
                        }
                        else
                        {
                            result.AddError(EErrorCodes.ImporterError, EErrorType.Warning, string.Format("Failed to import filing {0}", filing.Name));
                        }
                    }
                    result.Success = true;
                }
                else
                {
                    result.Success = false;
                    result.AddError(EErrorCodes.InvalidParserParams, EErrorType.Error, string.Format("Cannot find the SEC CIK for company with code {0}", extractSECParams.CompanyCode));
                }
            }
            else
            {
                result.Success = false;
                result.AddError(EErrorCodes.InvalidParserParams, EErrorType.Error, "Parameters of invalid type were provided");
            }

            return(result);
        }
Esempio n. 21
0
 public async Task <ActionResult> Delete(SubmissionFile model)
 {
     return(RedirectToRoute("UploadIndex"));
 }
Esempio n. 22
0
        private SECSourceSubmissionInfo ExtractReportDetailsIndexHTML(SubmissionFile submissionIndexFile)
        {
            SECSourceSubmissionInfo subInfo = new SECSourceSubmissionInfo();


            string txtContent = System.Text.Encoding.Default.GetString(submissionIndexFile.Content.ToArray());

            var doc = new HtmlDocument();

            doc.LoadHtml(txtContent);


            HtmlNode nodeType = doc.DocumentNode.SelectSingleNode("//div[@id='formDiv']/div[@id='formHeader']/div[@id='formName']/strong"); //

            if (nodeType != null)
            {
                if (nodeType.InnerText.Equals("10-Q"))
                {
                    subInfo.Type = "10-Q";
                }

                else if (nodeType.InnerText.Equals("10-K"))
                {
                    subInfo.Type = "10-K";
                }

                else if (nodeType.InnerText.Equals("Form 424B2"))
                {
                    subInfo.Type = "424B2";
                }

                else if (nodeType.InnerText.Equals("Form 4"))
                {
                    subInfo.Type = "4";
                }

                else if (nodeType.InnerText.Equals("13F-HR"))
                {
                    subInfo.Type = "13F-HR";
                }

                if (!string.IsNullOrEmpty(subInfo.Type))
                {
                    // extracting dates
                    var nodesMetadata = doc.DocumentNode.SelectNodes("//div[@id='formDiv']/div/div/div[@class='infoHead']");
                    if (nodesMetadata != null)
                    {
                        foreach (HtmlNode node in nodesMetadata)
                        {
                            HtmlNode nodeDate = node.SelectSingleNode("../div[@class='info']");
                            if (nodeDate != null)
                            {
                                if (node.InnerText == "Accepted")
                                {
                                    subInfo.Submitted = DateTime.Parse(nodeDate.InnerText);
                                }
                                else if (node.InnerText == "Period of Report")
                                {
                                    subInfo.PeriodEnd = DateTime.Parse(nodeDate.InnerText);
                                }
                            }
                        }
                    }
                    // extracting report file name
                    HtmlNode nodeFilingData = doc.DocumentNode.SelectSingleNode("//div[@id='formDiv']/div/table/tr/td[text()='EX-101.INS']/..");
                    if (nodeFilingData == null)
                    {
                        switch (subInfo.Type)
                        {
                        case "10-Q":
                        case "10-K":
                            nodeFilingData = doc.DocumentNode.SelectSingleNode("//div[@id='formDiv']/div/table/tr/td[text()='XML']/..");
                            break;

                        case "4":
                        {
                            var fileNodes = doc.DocumentNode.SelectNodes("//div[@id='formDiv']/div/table/tr/td[text()='4']/..");
                            nodeFilingData = fileNodes.FirstOrDefault(x => x.SelectSingleNode("td/a") != null && x.SelectSingleNode("td/a").InnerText.IndexOf(".xml") >= 0);
                        }
                        break;

                        case "13F-HR":
                            subInfo.Report.Add("primary_doc.xml");
                            subInfo.Report.Add("form13fInfoTable.xml");
                            break;
                        }
                    }
                    if (nodeFilingData != null)
                    {
                        HtmlNode nodeFileName = nodeFilingData.SelectSingleNode("td/a");
                        subInfo.Report.Add(nodeFileName.InnerText.Trim());
                    }
                }
            }

            return(subInfo);
        }
Esempio n. 23
0
 public async Task AddAsync(SubmissionFile model)
 {
     _context.SubmissionFiles.Add(model);
     await _context.SaveChangesAsync();
 }