Ejemplo n.º 1
0
        public async Task <ValidationResult <Document> > RetrieveDocumentByGuid(Guid documentGuid, string userId)
        {
            var validationResult = new ValidationResult <Document>();
            //  var workerId = await _workerBusinessService.RetrieveWorkerIdByUserId(userId);
            //  if (workerId == 0) return validationResult.Error("No worker found for logged in user");

            var document = await _documentDataService.RetrieveAsync <Entity.Document>(e => e.Guid == documentGuid);

            var result = _mapper.Map <IEnumerable <Document> >(document);

            return(validationResult.Success(result.FirstOrDefault(), ""));
        }
Ejemplo n.º 2
0
        public async Task <ValidationResult <Document> > CreateDocument(Document document)
        {
            //Get Document
            var documentsResultData = await _documentDataService.RetrieveAsync <Data.Entities.DocumentDetail>(e => e.PersonnelId == document.PersonnelId && e.CategoryId == document.CategoryId);

            var documentsResult = _mapper.MapToList <DocumentDetail>(documentsResultData);

            //Delete Documents
            if (documentsResult.Count > 0)
            {
                await DeleteDocuments(documentsResult.ToList());
            }

            //Create Documents
            var validationResult   = new ValidationResult <Document>();
            var newGuid            = Guid.NewGuid();
            var documentCategories = await this.RetrieveDocumentCategoriesAsync();

            var category = documentCategories.FirstOrDefault(e => e.Name.ToLower() == document.Category.ToLower()); //check Category

            if (category == null)
            {
                return(validationResult.Error("Document category not found"));
            }
            var productData = _productDataService.RetrieveAll <Data.Entities.Product>();
            var result      = _mapper.MapToList <Product>(productData);
            var product     = result.Single(p => p.Name.ToLower() == Product.ToLower());

            if (product == null)
            {
                return(validationResult.Error("product not found"));
            }
            // this categoryFileName ensures uniqueness of file in folder and is critical
            var categoryFileName = string.Format("{0}_{1}_{2}", document.Category, newGuid, document.FileName); //check Category
            var basePath         = product.UncPath;
            // sjp retain compatibility with existing DocumentService
            var personnelDirectory = CreatePersonnelDirectory(basePath, document.PersonnelName, document.PersonnelId); //check PersonnelName
            var categoryDirectory  = Path.Combine(personnelDirectory, document.Category);                              //check Category
            var filePath           = Path.Combine(categoryDirectory, categoryFileName);

            var documentDetail = new Data.Entities.DocumentDetail
            {
                DocumentGUID      = newGuid,
                ProductId         = product.ProductId,
                CategoryId        = category.DocumentCategoryId,
                PersonnelId       = document.PersonnelId,
                Description       = document.Description,
                FileName          = document.FileName,
                ClientFileName    = document.ClientFileName,
                CreatedDateUTC    = DateTime.UtcNow,
                CreatedBy         = document.CreatedBy,
                RequireApproval   = document.RequireApproval,
                UncPath           = basePath,
                RelativePath      = filePath.Replace(basePath, string.Empty),
                DocumentBatchId   = document.DocumentBatchId,
                DownloadedDateUtc = document.DownloadedDateUtc,
                EmailSentDateUtc  = document.EmailSentDateUtc
            };

            Directory.CreateDirectory(categoryDirectory);

            if (document.Content != null)                                          //check Content
            {
                File.WriteAllBytes(filePath, document.Content);                    //check Content
            }
            else if (!string.IsNullOrEmpty(document.ContentBase64))                //check ContentBase64
            {
                byte[] content = Convert.FromBase64String(document.ContentBase64); //check ContentBase64
                File.WriteAllBytes(filePath, content);
            }

            try
            {
                var entity = await _documentDataService.CreateGetAsync(documentDetail);

                validationResult.Entity    = _mapper.Map <Document>(entity);
                validationResult.Succeeded = true;
            }
            catch (Exception ex)
            {
                validationResult.Succeeded = false;
            }
            return(validationResult);
        }