using BuddyFinance.Integration.Models.Enums; using BuddyFinance.Integration.Models.Files; using BuddyFinance.Integration.Models.Registration; using BuddyFinance.Model; using System; using System.Configuration; using System.IO; using System.Linq; namespace BuddyFinance.Integration { public class DocumentsIntegrator : BaseIntegrator { public FileUploadResult Upload(Models.Files.FileData uploadFile) { var result = new FileUploadResult(); try { using (var db = new BuddyFinanceDBEntities()) { var contentBytes = Convert.FromBase64String(uploadFile.Contents); var fileData = new BuddyFinance.Model.FileData { Contents = contentBytes, ContentType = uploadFile.ContentType, FileName = uploadFile.FileName, Size = uploadFile.Contents.Length, }; db.FileDatas.Add(fileData); db.SaveChanges(); result.Result = new Uploaded { FileId = fileData.Id, Date = DateTime.Now }; result.ErrorCode = (int)ResponseCodes.Success; result.ErrorMessage = "Success"; } } catch (System.Exception ex) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = ex.Message; } return result; } public GetFileResult GetFile(int fileId) { var result = new GetFileResult(); try { using (var db = new BuddyFinanceDBEntities()) { var file = db.FileDatas.FirstOrDefault(m => m.Id == fileId); if (file != null) { result.ErrorCode = 0; result.ErrorMessage = "Success"; result.Result = new Models.Files.FileData { Id = file.Id, Contents = Convert.ToBase64String(file.Contents), ContentType = file.ContentType, FileName = file.FileName, FileUrl = file.FileUrl, Size = file.Size }; } else { result.ErrorCode = (int)ResponseCodes.NotFound; result.ErrorMessage = "Could not find file "; } } } catch (Exception x) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = x.Message; } return result; } public GetDocumentResult GetDocument(int id) { var result = new GetDocumentResult(); try { using (var db = new BuddyFinanceDBEntities()) { var file = db.ProfileDocuments.FirstOrDefault(m => m.Id == id);//?.FileData; if (file != null) { result.ErrorCode = 0; result.ErrorMessage = "Success"; result.Result = new Models.Document { DocumentId = file.Id, DocumentTypeId = file.DocumentTypeId, DocumentType = new Models.DocumentType { Id = file.DocumentType.Id, Description = file.DocumentType.Description }, UploadedDate = file.UploadedDate, FileData = new Models.Files.FileData { Id = file.Id, Contents = Convert.ToBase64String(file.FileData.Contents), ContentType = file.FileData.ContentType, FileName = file.FileData.FileName, FileUrl = file.FileData.FileUrl, Size = file.FileData.Size } }; } else { result.ErrorCode = (int)ResponseCodes.NotFound; result.ErrorMessage = "Could not find file "; } } } catch (Exception x) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = x.Message; } return result; } public GetFileResult Terms() { var result = new GetFileResult(); try { var fileName = ConfigurationManager.AppSettings["BaseFilePath"] + "terms.pdf"; fileName = fileName.Replace(@"\\", @"\"); if (File.Exists(fileName)) { var file = File.ReadAllBytes(fileName); result.ErrorCode = 0; result.ErrorMessage = "Success"; result.Result = new Models.Files.FileData { Contents = Convert.ToBase64String(file), ContentType = "application/pdf", FileName = "terms.pdf", FileUrl = ConfigurationManager.AppSettings["BaseFileAccessPath"] + "terms.pdf", Size = file.Length }; } else { result.ErrorCode = (int)ResponseCodes.NotFound; result.ErrorMessage = "Could not load terms and conditions. Document not found."; } } catch (Exception x) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = x.Message; } return result; } public GetFileResult UpdateTerms(byte[] contents) { var result = new GetFileResult(); if (contents == null) { result.ErrorCode = (int)ResponseCodes.ValidationError; result.ErrorMessage = "Upload File is invalid or empty"; } else { try { var fileName = ConfigurationManager.AppSettings["BaseFilePath"] + "terms.pdf"; fileName = fileName.Replace(@"\\", @"\"); if (File.Exists(fileName)) File.Delete(fileName); File.WriteAllBytes(fileName, contents); return Terms(); } catch (Exception ex) { result.ErrorCode = (int)ResponseCodes.Exception; result.ErrorMessage = "Could not update terms and conditions. " + ex.Message; } } return result; } private string SaveToFileSystem(string fileName, byte[] contents, string contentType) { // save file and generate url var fileUrl = ""; return fileUrl; } } }