예제 #1
0
        public async Task <CrmEntity> QueryById(Guid entityId)
        {
            try
            {
                CrmEntity entity   = null;
                var       userInfo = ContextContainer.GetValue <UserInfo>(ContextExtensionTypes.CurrentUserInfo);
                entity = await _crmService.Retrieve(EntityName, entityId, "", userInfo != null?userInfo.systemuserid : null);

                return(entity);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        /// <summary>
        /// 预约记录明细
        /// </summary>
        /// <param name="entityid"></param>
        /// <returns></returns>
        public async Task <CrmEntity> QueryDetail(string entityid)
        {
            try
            {
                var       fetchString = _appointmentInfoRepository.QueryDetail(entityid);
                CrmEntity entity      = null;
                entity = await _crmService.Retrieve("mcs_appointmentinfo", Guid.Parse(entityid), fetchString, null, dicHead);

                return(entity);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #3
0
        public async Task <CrmEntity> Retrieve(ICrmService crmService, string entityName, Guid id, Guid?userId = null)
        {
            var userInfo = ContextContainer.GetValue <UserInfo>(ContextExtensionTypes.CurrentUserInfo);
            var dicHead  = new Dictionary <string, IEnumerable <string> >();

            dicHead.Add("Prefer", new List <string>()
            {
                "odata.include-annotations=\"*\""
            });
            CrmEntity entity = null;

            entity = await crmService.Retrieve(entityName, id, "", userInfo?.systemuserid, dicHead);

            return(entity);
        }
예제 #4
0
        public async Task <OrderQueryInfoResponse> QueryOrderInfo(string guid)
        {
            var orderQueryInfoResponse = new OrderQueryInfoResponse();
            var orderid     = Guid.Parse(guid);
            var orderEntity = await _crmService.Retrieve("mcs_tc_order", orderid, string.Empty, null, dicHead);

            #region 跟进记录
            var xdoc = await Task <XDocument> .Run(() =>
            {
                var fetchXml = string.Empty;
                fetchXml     = $@"
            <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' >
              <entity name='mcs_tc_productorderitem'>
                <filter type='and'>
                <condition attribute='mcs_order' operator='eq' value='{orderid}' />
                </filter>
              </entity>
            </fetch>";
                return(XDocument.Parse(fetchXml));
            });

            var fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
            {
                EntityName = "mcs_tc_productorderitem",
                FetchXml   = xdoc
            };
            fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
            var fetchResponse = await _crmService.Execute(fetchRequest);

            var productorderitemList = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
            #endregion

            orderQueryInfoResponse.OrderInfo = orderEntity.Attributes;
            foreach (var orderitem in productorderitemList.Value.Results)
            {
                orderQueryInfoResponse.OrderItemArray.Add(orderitem.Attributes);
            }
            return(orderQueryInfoResponse);
        }
예제 #5
0
        public async Task <CustomerQueryInfoResponse> QueryInfo(string guid)
        {
            var customerQueryInfoResponse = new CustomerQueryInfoResponse();
            var carserviceadvisorGuid     = Guid.Parse(guid);
            var carserviceadvisorEntity   = await _crmService.Retrieve("mcs_carserviceadvisor", carserviceadvisorGuid, string.Empty, null, dicHead);

            var vehownerGuid   = Guid.Parse(carserviceadvisorEntity.Attributes.Value <string>("_mcs_customerid_value"));
            var vehownerEntity = await _crmService.Retrieve("mcs_vehowner", vehownerGuid, string.Empty, null, dicHead);

            #region 跟进记录
            var xdoc = await Task <XDocument> .Run(() =>
            {
                var fetchXml = string.Empty;
                fetchXml     = $@"
            <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' >
              <entity name='mcs_customerfollowuplog'>
                <order attribute='mcs_name' descending='false' />
                <filter type='and'>
                <condition attribute='mcs_carserviceadvisorid' operator='eq' value='{carserviceadvisorGuid}' />
                </filter>
              </entity>
            </fetch>";
                return(XDocument.Parse(fetchXml));
            });

            var fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
            {
                EntityName = "mcs_customerfollowuplog",
                FetchXml   = xdoc
            };
            fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
            var fetchResponse = await _crmService.Execute(fetchRequest);

            var customerfollowuplogList = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
            #endregion

            #region 标签
            xdoc = await Task <XDocument> .Run(() =>
            {
                var fetchXml = string.Empty;
                fetchXml     = $@"
            <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' >
              <entity name='mcs_tag'>
                <order attribute='mcs_name' descending='false' />
                <link-entity name='mcs_mcs_vehowner_mcs_tag' from='mcs_tagid' to='mcs_tagid' visible='false' intersect='true'>
                    <filter type='and'>
                        <condition attribute='mcs_vehownerid' operator='eq' value='{vehownerGuid}' />
                    </filter>
                </link-entity>
              </entity>
            </fetch>";
                return(XDocument.Parse(fetchXml));
            });

            fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
            {
                EntityName = "mcs_tag",
                FetchXml   = xdoc
            };
            fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
            fetchResponse = await _crmService.Execute(fetchRequest);

            var tagList = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
            #endregion

            #region 维修履历
            xdoc = await Task <XDocument> .Run(() =>
            {
                var fetchXml = string.Empty;
                fetchXml     = $@"
            <fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' >
              <entity name='mcs_serviceproxy'>
                <order attribute='mcs_name' descending='false' />
                <filter type='and'>
                    <condition attribute='mcs_customerid' operator='eq' value='{vehownerGuid}' />
                    <condition attribute='mcs_currenttype' operator='eq' value='20' />
                    <condition attribute='mcs_status' operator='eq' value='180' />
                </filter>
              </entity>
            </fetch>";
                return(XDocument.Parse(fetchXml));
            });

            fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
            {
                EntityName = "mcs_serviceproxy",
                FetchXml   = xdoc
            };
            fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
            fetchResponse = await _crmService.Execute(fetchRequest);

            var serviceproxyResumeResponse = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
            #endregion

            customerQueryInfoResponse.Carserviceadvisor       = carserviceadvisorEntity;
            customerQueryInfoResponse.Vehowner                = vehownerEntity;
            customerQueryInfoResponse.CustomerfollowuplogList = customerfollowuplogList.Value.Results;
            customerQueryInfoResponse.TagList = tagList.Value.Results;
            customerQueryInfoResponse.ServiceproxyResumeList = serviceproxyResumeResponse.Value.Results;
            return(customerQueryInfoResponse);
        }