示例#1
0
        public async Task <ResponseDto <GetCaseDto> > GetCaseById(int id)
        {
            var caseFromDb = await _casesRepository.GetCaseById(id);

            ResponseDto <GetCaseDto> response = CasesValidator.ValidateGetCaseById(caseFromDb);

            if (response.HasErrors)
            {
                return(response);
            }

            var mappedCase = Mapper.Map <GetCaseDto>(caseFromDb);

            response.Value = mappedCase;
            return(response);
        }
示例#2
0
        public async Task <ResponseDto <string> > AddDocument(ClaimsPrincipal user, IFormFile document, int caseId)
        {
            Case caseFromDb = await _casesRepository.GetCaseById(caseId);

            ResponseDto <string> response = DocumentsValidator.ValidateAddDocument(caseFromDb, document, user);

            string   filePath      = GetAvailablePath(_documentsFolderPath, document.FileName);
            Document documentToAdd = new Document {
                Path = filePath, Status = Status.Sent, Case = caseFromDb
            };

            try
            {
                using (var fs = new FileStream(filePath, FileMode.Create))
                {
                    await document.CopyToAsync(fs);
                }
            }
            catch
            {
                response.AddError(DocumentErrors.CannotSave);
                return(response);
            }

            try
            {
                await _documentsRepository.AddDocument(documentToAdd);

                var split = filePath.Split('\\');
                response.Value = string.Join('/', split.Skip(split.Length - 2));
                return(response);
            }
            catch
            {
                File.Delete(filePath);
                response.AddError(DocumentErrors.InfoSaveFailed);
                return(response);
            }
        }