public async Task <DocumentStoreGetRes> GetDocumentStore([FromBody] DocumentStoreGetReq request)
        {
            var response = new DocumentStoreGetRes();

            try
            {
                if (request != null)
                {
                    response = await _documentStoreRepository.GetDocumentStore(request);
                }
                else
                {
                    response.ResponseStatus.Status       = "Failure";
                    response.ResponseStatus.ErrorMessage = "Details can not be blank.";
                }
            }
            catch (Exception ex)
            {
                response.ResponseStatus.Status       = "Failure";
                response.ResponseStatus.ErrorMessage = "An Error Occurs :- " + ex.Message;
            }
            return(response);
        }
        public async Task <DocumentStoreGetRes> GetDocumentStore(DocumentStoreGetReq request)
        {
            var res = new DocumentStoreGetRes()
            {
                DocumentStoreList = new List <mDocumentStore>(), ResponseStatus = new ResponseStatus()
            };

            try
            {
                if (request != null)
                {
                    FilterDefinition <mDocumentStore> filter;
                    filter = Builders <mDocumentStore> .Filter.Empty;

                    if (!string.IsNullOrEmpty(request.DocumentId))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.Document_Id == request.DocumentId);
                    }
                    if (!string.IsNullOrEmpty(request.DocumentType))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.DocumentType.ToLower() == request.DocumentType.ToLower());
                    }
                    if (!string.IsNullOrEmpty(request.QRFID))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.QRFID == request.QRFID);
                    }
                    if (!string.IsNullOrEmpty(request.BookingNumber))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.BookingNumber == request.BookingNumber);
                    }
                    if (!string.IsNullOrEmpty(request.Position_Id))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.PositionId == request.Position_Id);
                    }
                    if (!string.IsNullOrEmpty(request.Supplier_Id))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.SupplierId == request.Supplier_Id);
                    }
                    if (!string.IsNullOrEmpty(request.Client_Id))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.ClientId == request.Client_Id);
                    }
                    if (!string.IsNullOrEmpty(request.AlternateService_Id))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.AlternateServiceId == request.AlternateService_Id);
                    }
                    if (!string.IsNullOrEmpty(request.SendStatus))
                    {
                        filter = filter & Builders <mDocumentStore> .Filter.Where(f => f.SendStatus.ToLower() == request.SendStatus.ToLower());
                    }

                    var mDocumentStoreList = await _MongoContext.mDocumentStore.Find(filter).ToListAsync();

                    if (mDocumentStoreList != null && mDocumentStoreList.Count > 0)
                    {
                        res.DocumentStoreList     = mDocumentStoreList;
                        res.ResponseStatus.Status = "Success";
                    }
                    else
                    {
                        res.ResponseStatus.Status       = "Failure";
                        res.ResponseStatus.ErrorMessage = "Records not found.";
                    }
                }
                else
                {
                    res.ResponseStatus.Status       = "Failure";
                    res.ResponseStatus.ErrorMessage = "Request can not be null/blank.";
                }
            }
            catch (Exception ex)
            {
                res.ResponseStatus.Status       = "Failure";
                res.ResponseStatus.ErrorMessage = !string.IsNullOrEmpty(ex.Message) ? ex.Message : (ex.InnerException != null && !string.IsNullOrEmpty(ex.InnerException.Message)) ? ex.InnerException.Message : "";
            }
            return(res);
        }
        public async Task <DocumentStoreInfoGetRes> GetCommunicationTrail(DocumentStoreGetReq request)
        {
            var res = new DocumentStoreInfoGetRes()
            {
                DocumentStoreList = new List <DocumentStoreList>(),
                DocumentStoreInfo = new DocumentStoreInfo(),
                ResponseStatus    = new ResponseStatus(),
                BookingNumber     = request.BookingNumber,
                QRFID             = request.QRFID
            };

            try
            {
                if (request != null)
                {
                    if (!string.IsNullOrEmpty(request.QRFID))
                    {
                        var QRFPrice = _MongoContext.mQRFPrice.AsQueryable().Where(x => x.QRFID == request.QRFID && x.IsCurrentVersion == true && x.IsDeleted == false).OrderByDescending(y => y.VersionId).FirstOrDefault();
                        res.AgentTourName = QRFPrice.AgentProductInfo.TourName;
                    }
                    DocumentStoreGetRes objDocumentStoreGetRes = await GetDocumentStore(request);

                    if (objDocumentStoreGetRes?.ResponseStatus?.Status.ToLower() == "success" && objDocumentStoreGetRes?.DocumentStoreList?.Count > 0)
                    {
                        res.DocumentStoreList = objDocumentStoreGetRes.DocumentStoreList.Select(a => new DocumentStoreList
                        {
                            DocumentId = a.Document_Id,
                            From       = a.From,
                            Subject    = a.Subject,
                            SendDate   = a.SendDate != null ? TimeZoneInfo.ConvertTimeFromUtc(a.SendDate.Value, INDIAN_ZONE) : DateTime.MinValue,
                            SendStatus = a.SendStatus,
                            To         = a.To != null ? string.Join(',', a.To) : ""
                        }).ToList();

                        var firstemail = objDocumentStoreGetRes.DocumentStoreList.FirstOrDefault();
                        res.DocumentStoreInfo = new DocumentStoreInfo()
                        {
                            To                                                                                    = firstemail.To != null?string.Join(',', firstemail.To) : "",
                                                                       Body                                       = firstemail.Body,
                                                                       DocumentPath                               = firstemail.DocumentPath != null?string.Join(',', firstemail.DocumentPath) : "",
                                                                                                         From     = firstemail.From,
                                                                                                         SendDate = firstemail.SendDate != null?TimeZoneInfo.ConvertTimeFromUtc(firstemail.SendDate.Value, INDIAN_ZONE) : DateTime.MinValue,
                                                                                                                        SendStatus = firstemail.SendStatus,
                                                                                                                        Subject    = firstemail.Subject
                        };
                        res.ResponseStatus.Status = "Success";
                    }
                    else
                    {
                        if (objDocumentStoreGetRes?.ResponseStatus?.Status.ToLower() != "success")
                        {
                            res.ResponseStatus.Status       = "Failure";
                            res.ResponseStatus.ErrorMessage = objDocumentStoreGetRes?.ResponseStatus?.ErrorMessage;
                        }
                        else
                        {
                            res.ResponseStatus.Status       = "Failure";
                            res.ResponseStatus.ErrorMessage = "Communication Trail details not found.";
                        }
                    }
                }
                else
                {
                    res.ResponseStatus.Status       = "Failure";
                    res.ResponseStatus.ErrorMessage = "Request can not be null/blank.";
                }
            }
            catch (Exception ex)
            {
                res.ResponseStatus.Status       = "Failure";
                res.ResponseStatus.ErrorMessage = !string.IsNullOrEmpty(ex.Message) ? ex.Message : (ex.InnerException != null && !string.IsNullOrEmpty(ex.InnerException.Message)) ? ex.InnerException.Message : "";
            }
            return(res);
        }