Пример #1
0
        /// <summary>
        /// 试乘试驾列表查询接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public string QueryList(DriveRecordRequest request)
        {
            var filter = string.Empty;

            if (request.Status != null && request.Status != 0)
            {
                filter += $"<condition attribute='mcs_drivestatus' operator='eq' value='{request.Status}' />";
            }
            if (request.DealerId != null)
            {
                filter += $"<condition attribute='mcs_dealerid' operator='eq' value='{request.DealerId}' />";
            }
            if (request.OrderTime != null)
            {
                filter += $"<condition attribute='mcs_ordertime' operator='on' value='{request.OrderTime}' />";
            }
            if (!string.IsNullOrWhiteSpace(request.Search))
            {
                filter += $"<filter type='or'>";
                filter += $"<condition attribute='mcs_fullname' operator='like' value='%{request.Search}%' />";
                filter += $"<condition attribute='mcs_mobilephone' operator='like' value='%{request.Search}%' />";
                filter += $"<condition attribute='mcs_name' operator='like' value='%{request.Search}%' />";
                filter += $"</filter>";
            }
            var fetchString = $@"<fetch version='1.0' count='{request.PageSize}' page='{request.PageIndex}' output-format='xml-platform' mapping='logical' distinct='false'>
                  <entity name='mcs_driverecord'>
                    <all-attributes />
                    <order attribute='mcs_ordertime' descending='true' />
                    <filter type='and'>
                      <condition attribute='statecode' operator='eq' value='0' />
                      {filter}
                    </filter>
                  <link-entity name='mcs_reservationconfiguration' from='mcs_reservationconfigurationid' to='mcs_testdrivetime' visible='false' link-type='outer' >
                      <attribute name='mcs_name' alias='reservationname'/> 
                  </link-entity>
                  </entity>
                </fetch>";

            return(fetchString);
        }
Пример #2
0
        /// <summary>
        /// 查询试乘试驾各个状态数量
        /// </summary>
        /// <param name="request"></param>
        /// <param name="status"></param>
        /// <returns></returns>
        public string QueryListByCount(DriveRecordRequest request, int status)
        {
            var filter = string.Empty;

            if (status != 0)
            {
                filter += $"<condition attribute='mcs_drivestatus' operator='eq' value='{status}' />";
            }
            if (request.DealerId != null)
            {
                filter += $"<condition attribute='mcs_dealerid' operator='eq' value='{request.DealerId}' />";
            }
            if (request.OrderTime != null)
            {
                filter += $"<condition attribute='mcs_ordertime' operator='on' value='{request.OrderTime}' />";
            }
            if (!string.IsNullOrWhiteSpace(request.Search))
            {
                filter += $"<filter type='or'>";
                filter += $"<condition attribute='mcs_fullname' operator='like' value='%{request.Search}%' />";
                filter += $"<condition attribute='mcs_mobilephone' operator='like' value='%{request.Search}%' />";
                filter += $"<condition attribute='mcs_name' operator='like' value='%{request.Search}%' />";
                filter += $"</filter>";
            }
            var fetchString = $@"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'  aggregate='true'>
                  <entity name='mcs_driverecord'>
                    <attribute name='mcs_driverecordid' aggregate='countcolumn' alias='count'/>
                    <filter type='and'>
                      <condition attribute='statecode' operator='eq' value='0' />
                      {filter}
                    </filter>
                  </entity>
                </fetch>";

            return(fetchString);
        }
Пример #3
0
        /// <summary>
        /// 试乘试驾列表查询接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <DriveRecordListResponse <CrmEntity> > QueryList(DriveRecordRequest request)
        {
            try
            {
                var userInfo = ContextContainer.GetValue <UserInfo>(ContextExtensionTypes.CurrentUserInfo);
                if (userInfo != null && !string.IsNullOrWhiteSpace(userInfo.mcs_dealerid))
                {
                    // request.DealerId = Guid.Parse(userInfo.mcs_dealerid);
                }
                #region 查询结果集
                var fetchString = _driveRecordRepository.QueryList(request);

                var fetchXdoc    = XDocument.Parse(fetchString);
                var fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                {
                    EntityName  = "mcs_driverecord",
                    FetchXml    = fetchXdoc,
                    ProxyUserId = userInfo?.systemuserid
                };
                fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                var fetchResponse = await _crmService.Execute(fetchRequest);

                var fetchResponseResult = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                #endregion

                #region 查询总条数
                var status = 0;
                var fetchAllTotalCountString = _driveRecordRepository.QueryListByCount(request, status);
                var fetchAllTotalXdoc        = XDocument.Parse(fetchAllTotalCountString);
                fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                {
                    EntityName  = "mcs_driverecord",
                    FetchXml    = fetchAllTotalXdoc,
                    ProxyUserId = userInfo?.systemuserid
                };
                fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                fetchResponse = await _crmService.Execute(fetchRequest);

                var allTotalCountResults = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                #endregion

                #region 已提交
                status = 10;
                var fetchSubmittedCountString = _driveRecordRepository.QueryListByCount(request, status);
                var fetchSubmittedXdoc        = XDocument.Parse(fetchSubmittedCountString);
                fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                {
                    EntityName  = "mcs_driverecord",
                    FetchXml    = fetchSubmittedXdoc,
                    ProxyUserId = userInfo?.systemuserid
                };
                fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                fetchResponse = await _crmService.Execute(fetchRequest);

                var SubmittedCountResults = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                #endregion

                #region 已排程
                status = 12;
                var fetchScheduledCountString = _driveRecordRepository.QueryListByCount(request, status);
                var fetchScheduledXdoc        = XDocument.Parse(fetchScheduledCountString);
                fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                {
                    EntityName  = "mcs_driverecord",
                    FetchXml    = fetchScheduledXdoc,
                    ProxyUserId = userInfo?.systemuserid
                };
                fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                fetchResponse = await _crmService.Execute(fetchRequest);

                var ScheduledCountResults = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                #endregion

                //#region 已取消
                //status = 13;
                //var fetchCancelledCountString = _driveRecordRepository.QueryListByCount(request, status);
                //var fetchCancelledXdoc = XDocument.Parse(fetchCancelledCountString);
                //fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                //{
                //    EntityName = "mcs_driverecord",
                //    FetchXml = fetchCancelledXdoc,
                //    ProxyUserId = userInfo?.systemuserid
                //};
                //fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                //fetchResponse = await _crmService.Execute(fetchRequest);
                //var CancelledCountResults = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                //#endregion

                //#region 开始试驾
                //status = 14;
                //var fetchCancelledCountString = _driveRecordRepository.QueryListByCount(request, status);
                //var fetchCancelledXdoc = XDocument.Parse(fetchCancelledCountString);
                //fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                //{
                //    EntityName = "mcs_driverecord",
                //    FetchXml = fetchCancelledXdoc
                //};
                //fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                //fetchResponse = await _crmService.Execute(fetchRequest);
                //var CancelledCountResults = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                //#endregion

                var queryResult = new DriveRecordListResponse <CrmEntity>();
                queryResult.Results        = fetchResponseResult.Value.Results;
                queryResult.CurrentPage    = request.PageIndex;
                queryResult.ALLTotalCount  = (int)allTotalCountResults.Value.Results[0].Attributes["count"];
                queryResult.ScheduledCount = (int)ScheduledCountResults.Value.Results[0].Attributes["count"];
                queryResult.SubmittedCount = (int)SubmittedCountResults.Value.Results[0].Attributes["count"];

                return(queryResult);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #4
0
        public async Task <NewtonsoftJsonActionResult <DriveRecordListResponse <CrmEntity> > > GetList([FromQuery] DriveRecordRequest request)
        {
            var list = await app.QueryList(request);

            return(list);
        }
Пример #5
0
 /// <summary>
 /// 试乘试驾列表查询接口
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <DriveRecordListResponse <CrmEntity> > QueryList(DriveRecordRequest request)
 {
     return(await _driveRecordService.QueryList(request));
 }