public AppraisalViewModel GetAppraisalDocuments(Guid loanId, int userAccountId, ref AppraisalViewModel userAppraisalViewModel)
        {
            try
            {
                List <DocumentCategory> documentCategories = DocumentsServiceFacade.RetrieveDocumentCategoriesForClass(DocumentClass.VariousDocuments, loanId, userAccountId);
                if (documentCategories == null)
                {
                    documentCategories = new List <DocumentCategory>();
                }

                List <DocumentCategory> otherDocumentsCategories = DocumentsServiceFacade.RetrieveDocumentCategoriesForClass(DocumentClass.OtherDocuments, loanId, userAccountId);
                if (otherDocumentsCategories != null && otherDocumentsCategories.Where(x => x.IsAppraisalDocument) != null)
                {
                    documentCategories.AddRange(otherDocumentsCategories.Where(x => x.IsAppraisalDocument).ToList());
                }

                var listItems = new List <DropDownItem>();
                foreach (DocumentCategory document in documentCategories)
                {
                    listItems.Add(new DropDownItem()
                    {
                        Selected = false,
                        Text     = document.Name,
                        Value    = document.DocumentCategoryId.ToString()
                    });
                }

                userAppraisalViewModel.DocumentCategoryTypes = listItems;

                List <MML.Contracts.Document> documents = DocumentsServiceFacade.RetrieveLenderXDocuments(loanId, DocumentRole.Concierge, userAccountId);
                if (documents != null)
                {
                    var tempDoc = documents.Where(x => x.Files != null && x.Files.Count > 0 && documentCategories.Contains(x.DocumentCategory));
                    if (tempDoc != null)
                    {
                        documents = tempDoc.ToList();
                    }

                    foreach (MML.Contracts.Document document in documents)
                    {
                        if (document.Files.Where(x => x.LenderXFile != null).Count() < document.Files.Count)
                        {
                            foreach (UploadedFile file in document.Files)
                            {
                                if (file.LenderXFile == null)
                                {
                                    file.LenderXFile = new LenderXFile();
                                }
                            }
                        }
                    }

                    userAppraisalViewModel.Documents = documents.OrderBy(x => x.Name).ToList();
                }

                return(userAppraisalViewModel);
            }
            catch (Exception)
            {
                throw;
            }
        }