Пример #1
0
 public async Task <NewtonsoftJsonActionResult <ValidateResult <CrmEntity> > > AddOrEdit(DriveRecordAddOrEditRequest request)
 {
     return(await app.AddOrEdit(request));
 }
Пример #2
0
        /// <summary>
        /// 基础字段赋值
        /// </summary>
        /// <param name="createEntity"></param>
        /// <param name="request"></param>
        private CrmExecuteEntity BasicAssignment(CrmExecuteEntity entity, DriveRecordAddOrEditRequest request)
        {
            //姓名
            if (!string.IsNullOrWhiteSpace(request.driveRecord.mcs_fullname))
            {
                entity.Attributes.Add("mcs_fullname", request.driveRecord.mcs_fullname);
            }
            //手机号
            if (!string.IsNullOrWhiteSpace(request.driveRecord.mcs_mobilephone))
            {
                entity.Attributes.Add("mcs_mobilephone", request.driveRecord.mcs_mobilephone);
            }
            //试驾车型
            if (request.driveRecord.mcs_carmodel != null)
            {
                var carModelEntityRef = new CrmEntityReference("mcs_carmodel", (Guid)request.driveRecord.mcs_carmodel);
                entity.Attributes.Add("mcs_carmodel", carModelEntityRef);
            }
            //业务类型
            if (!string.IsNullOrWhiteSpace(request.driveRecord.mcs_businesstype))
            {
                var mcs_businesstype = int.Parse(request.driveRecord.mcs_businesstype);
                entity.Attributes.Add("mcs_businesstype", mcs_businesstype);
            }
            //预约日期
            if (request.driveRecord.mcs_ordertime != null)
            {
                var ordertime = request.driveRecord.mcs_ordertime.Value.ToUniversalTime();
                entity.Attributes.Add("mcs_ordertime", ordertime);
            }
            //预约试驾时段
            if (request.driveRecord.mcs_testdrivetime != null)
            {
                var configEntityRef = new CrmEntityReference("mcs_reservationconfiguration", (Guid)request.driveRecord.mcs_testdrivetime);
                entity.Attributes.Add("mcs_testdrivetime", configEntityRef);
            }
            //预约厅店
            if (request.driveRecord.mcs_dealerid != null)
            {
                var dealerEntityEF = new CrmEntityReference("mcs_dealer", (Guid)request.driveRecord.mcs_dealerid);
                entity.Attributes.Add("mcs_dealerid", dealerEntityEF);
            }
            //销售顾问
            if (request.driveRecord.mcs_consultantid != null)
            {
                var systemUserEntityEF = new CrmEntityReference("systemuser", (Guid)request.driveRecord.mcs_consultantid);
                entity.Attributes.Add("mcs_consultantid", systemUserEntityEF);
            }
            //试驾车辆
            if (request.driveRecord.mcs_drivecar != null)
            {
                var drivecarEntityEF = new CrmEntityReference("mcs_testdrivecar", (Guid)request.driveRecord.mcs_drivecar);
                entity.Attributes.Add("mcs_drivecar", drivecarEntityEF);
            }
            //试驾路线
            if (request.driveRecord.mcs_appointedrouteid != null)
            {
                var appointedRouteEntityEF = new CrmEntityReference("mcs_driveroute", (Guid)request.driveRecord.mcs_appointedrouteid);
                entity.Attributes.Add("mcs_appointedrouteid", appointedRouteEntityEF);
            }
            //取消原因
            if (!string.IsNullOrWhiteSpace(request.driveRecord.mcs_cancelreason))
            {
                entity.Attributes.Add("mcs_cancelreason", request.driveRecord.mcs_cancelreason);
            }
            //试驾开始时间
            if (request.driveRecord.mcs_starton != null)
            {
                var starton = request.driveRecord.mcs_starton.Value.ToUniversalTime();;
                entity.Attributes.Add("mcs_starton", starton);
            }
            //试驾结束时间
            if (request.driveRecord.mcs_endon != null)
            {
                var endon = request.driveRecord.mcs_endon;
                entity.Attributes.Add("mcs_endon", endon);
            }

            return(entity);
        }
Пример #3
0
        /// <summary>
        /// 试乘试驾新增修改
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <ValidateResult <CrmEntity> > AddOrEdit(DriveRecordAddOrEditRequest request)
        {
            var userInfo = ContextContainer.GetValue <UserInfo>(ContextExtensionTypes.CurrentUserInfo);

            if (userInfo != null && !string.IsNullOrWhiteSpace(userInfo.mcs_dealerid))
            {
                request.driveRecord.mcs_dealerid = Guid.Parse(userInfo.mcs_dealerid);
            }
            if (userInfo != null && userInfo.systemuserid != null)
            {
                request.driveRecord.mcs_consultantid = userInfo.systemuserid;
            }
            var validateResult  = new ValidateResult <CrmEntity>();
            var reusetCrmEntity = new CrmEntity("mcs_driverecord", new Guid());

            //新增预约单
            if (request.driveRecord.mcs_driverecordid == null)
            {
                var createEntity = new CrmExecuteEntity("mcs_driverecord", Guid.NewGuid());
                //预约状态 创建默认是已提交
                createEntity.Attributes.Add("mcs_drivestatus", 10);
                BasicAssignment(createEntity, request);
                await _crmService.Create(createEntity, userInfo?.systemuserid);

                reusetCrmEntity.Id = createEntity.Id;
            }
            //编辑预约单
            if (request.driveRecord.mcs_driverecordid != null)
            {
                var updateEntity = new CrmExecuteEntity("mcs_driverecord", (Guid)request.driveRecord.mcs_driverecordid);
                //预约状态
                if (request.driveRecord.mcs_drivestatus != null)
                {
                    updateEntity.Attributes.Add("mcs_drivestatus", request.driveRecord.mcs_drivestatus);
                    #region 判断如果试驾结束,为用户推送试驾反馈站内信
                    if (request.driveRecord.mcs_drivestatus.Value == 15)
                    {
                        //获取试驾结束站内信发送配置json
                        var fetchString  = _driveRecordRepository.GetConfigFetchXml(DCEM_APP_DriveOverMsgJson);
                        var fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                        {
                            EntityName = "mcs_cepconfig",
                            FetchXml   = fetchString
                                         //ProxyUserId = userInfo?.systemuserid
                        };
                        fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                        var fetchResponse = await _crmService.Execute(fetchRequest);

                        var fetchResponseResult = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                        if (fetchResponseResult.Value.Results.Count > 0)
                        {
                            //获取试驾明细
                            var detail = GetDetail((Guid)request.driveRecord.mcs_driverecordid);
                            if (detail != null && detail.Result.Detail.Attributes.ContainsKey("mcs_userid"))
                            {
                                //用户获取
                                fetchString  = _driveRecordRepository.GetUser(detail.Result.Detail.Attributes["mcs_userid"].ToString());
                                fetchRequest = new CrmRetrieveMultipleFetchRequestMessage()
                                {
                                    EntityName = "mcs_user",
                                    FetchXml   = fetchString
                                                 //ProxyUserId = userInfo?.systemuserid
                                };
                                fetchRequest.Headers.Add(dicHeadKey, dicHead[dicHeadKey]);
                                fetchResponse = await _crmService.Execute(fetchRequest);

                                var responseUser = fetchResponse as CrmRetrieveMultipleFetchResponseMessage;
                                if (responseUser.Value.Results.Count > 0)//判断试驾用户信息是否存在
                                {
                                    var obj = JsonConvert.DeserializeObject <DriveRecordEndSendMsg>(fetchResponseResult.Value.Results[0].Attributes["mcs_val"].ToString());
                                    var createUsermsgEntity = new CrmExecuteEntity("mcs_user_msg", Guid.NewGuid());

                                    createUsermsgEntity.Attributes.Add("mcs_name", obj.mcs_name);
                                    createUsermsgEntity.Attributes.Add("mcs_content", obj.mcs_content);
                                    createUsermsgEntity.Attributes.Add("mcs_type", 2);
                                    createUsermsgEntity.Attributes.Add("mcs_readstatus", 0);
                                    var mcs_url = string.Format(obj.mcs_url, responseUser.Value.Results[0].Attributes["mcs_code"], detail.Result.Detail.Attributes["mcs_name"]);
                                    createUsermsgEntity.Attributes.Add("mcs_url", mcs_url);
                                    var UserEntityEF = new CrmEntityReference("mcs_user", responseUser.Value.Results[0].Id);
                                    createUsermsgEntity.Attributes.Add("mcs_user", UserEntityEF);
                                    await _crmService.Create(createUsermsgEntity);
                                }
                            }
                        }
                    }
                    #endregion
                }
                BasicAssignment(updateEntity, request);
                await _crmService.Update(updateEntity, userInfo?.systemuserid);

                reusetCrmEntity.Id = (Guid)request.driveRecord.mcs_driverecordid;
            }
            validateResult.Data        = reusetCrmEntity;
            validateResult.Result      = true;
            validateResult.Description = "操作成功";
            return(validateResult);
        }
Пример #4
0
 /// <summary>
 /// 试乘试驾新增修改
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public async Task <ValidateResult <CrmEntity> > AddOrEdit(DriveRecordAddOrEditRequest request)
 {
     return(await _driveRecordService.AddOrEdit(request));
 }