/// <summary>
 /// 新增或更改公司信息
 /// </summary>
 public async Task CreateOrUpdateCompanyAsync(CreateOrUpdateCompanyInput input)
 {
     if (input.CompanyEditDto.Id.HasValue)
     {
         await UpdateCompanyAsync(input.CompanyEditDto);
     }
     else
     {
         await CreateCompanyAsync(input.CompanyEditDto);
     }
 }
        public async Task UpdateCompanyInfoAsync(CreateOrUpdateCompanyInput input)
        {
            if (input.CompanyEditDto.CompanyID == null)
            {
                return;
            }
            else
            {
                //更新企业表
                var _companyInfo = await _companyRepository.FirstOrDefaultAsync(t => t.CompanyID == input.CompanyEditDto.CompanyID);

                //_companyInfo.CompanyID= input.CompanyEditDto.CompanyID;
                _companyInfo.CompanyName      = input.CompanyEditDto.CompanyName;
                _companyInfo.CompanyEmail     = input.CompanyEditDto.CompanyEmail;
                _companyInfo.CompanyPhone     = input.CompanyEditDto.CompanyPhone;
                _companyInfo.isDelete         = input.CompanyEditDto.isDelete;
                _companyInfo.CompanyAddress   = input.CompanyEditDto.CompanyAddress;
                _companyInfo.CompanyScale     = input.CompanyEditDto.CompanyScale;
                _companyInfo.Classify         = input.CompanyEditDto.Classify;
                _companyInfo.Finanicing       = input.CompanyEditDto.Finanicing;
                _companyInfo.CompanyIntroduce = input.CompanyEditDto.CompanyIntroduce;
                await _companyRepository.UpdateAsync(_companyInfo);

                //更新user数据

                //---------------------------------------------------------------------
                var uid  = (long)_IAbpSession.UserId;
                var user = await UserManager.FindByIdAsync(uid);

                //Update user properties
                user.EmailAddress = input.CompanyEditDto.CompanyEmail;
                user.PhoneNumber  = input.CompanyEditDto.CompanyPhone;

                await UserManager.UpdateAsync(user);
            }
        }
        /// <summary>
        /// 新增或更改企业信息
        /// </summary>
        public async Task CreateOrUpdateCompanyAsync(CreateOrUpdateCompanyInput input)
        {
            int i = 0;
            //var _company = JsonConvert.DeserializeObject<CompanyEditDto>(input.EditJsonstring);//反序列
            var _company = JsonConvert.DeserializeObject(input.EditJsonstring);
            var sa       = input.CompanyEditDto;

            //if (_company.Id.HasValue)
            //{
            //    await UpdateCompanyAsync(_company);
            //}
            //else
            //{
            //    await CreateCompanyAsync(_company);
            //}
            if (input.CompanyEditDto.Id.HasValue)
            {
                await UpdateCompanyAsync(input.CompanyEditDto);
            }
            else
            {
                await CreateCompanyAsync(input.CompanyEditDto);
            }
        }
        public async Task <JsonResult> CreateCompany(CreateOrUpdateCompanyInput model)
        {
            if (PermissionChecker.IsGranted("Pages.Company.CreateCompany"))
            {
                try
                {
                    var oldCompany = await _companyService.GetCompanyByUserId(model.CompanyEditDto.UserId);

                    if (oldCompany != null)
                    {
                        return(Json(new { success = false, msg = "存在该用户已关联的企业" }));
                    }

                    CheckModelState();

                    using (var unitWork = UnitOfWorkManager.Begin())
                    {
                        var newModel = await _companyService.CreateCompanyAsync(model.CompanyEditDto);

                        if (newModel.Id > 0)
                        {
                            List <string> industryIds = newModel.Industry.Split(',').ToList();
                            foreach (string industryId in industryIds)
                            {
                                CreateOrUpdateCompanyIndustryInput industryInput = new CreateOrUpdateCompanyIndustryInput();
                                CompanyIndustryEditDto             dto           = new CompanyIndustryEditDto()
                                {
                                    CompanyId = newModel.Id.Value, IndustryId = int.Parse(industryId)
                                };
                                industryInput.CompanyIndustryEditDto = dto;
                                await _companyIndustryAppService.CreateOrUpdateCompanyIndustryAsync(industryInput);
                            }

                            var relativeUser = _userAppService.Get(new EntityDto <long> {
                                Id = model.CompanyEditDto.UserId
                            }).Result;
                            relativeUser.UserType = UserType.Company;

                            if (model.CompanyAuthEditDto != null)
                            {
                                relativeUser.UserType = UserType.VipCompany;
                                model.CompanyAuthEditDto.CompanyId = newModel.Id.Value;
                                var newAuthModel =
                                    await _companyAuthAppService.CreateCompanyAuthAsync(model.CompanyAuthEditDto);
                            }

                            var user = _userAppService.UpdateUser(relativeUser);


                            if (model.ContactEdit != null)
                            {
                                var contactEditDto = model.ContactEdit;
                                contactEditDto.CompanyId = newModel.Id.Value;
                                var newContactModel = await _contactAppService.CreateContactAsync(contactEditDto);

                                if (contactEditDto.IsDefault)
                                {
                                    await _contactAppService.SetContactDefault(newContactModel.CompanyId,
                                                                               newContactModel.Id.Value);
                                }
                            }
                        }
                        unitWork.Complete();
                    }
                    return(Json(new { success = true, msg = "" }));
                }
                catch (Exception e)
                {
                    return(Json(new { success = false, msg = "保存失败" }));
                }
            }
            return(Json(new { success = false, msg = "无操作权限" }));
        }
        public async Task <JsonResult> SaveCompany(CreateOrUpdateCompanyInput model)
        {
            if (PermissionChecker.IsGranted("Pages.Company.EditCompany"))
            {
                try
                {
                    var oldCompany = await _companyService.GetCompanyByUserId(model.CompanyEditDto.UserId);

                    if (oldCompany == null || oldCompany.Id != model.CompanyEditDto.Id)
                    {
                        return(Json(new { success = false, msg = "不存在操作对象" }));
                    }

                    CheckModelState();

                    using (var unitWork = UnitOfWorkManager.Begin())
                    {
                        await _companyService.UpdateCompanyAsync(model.CompanyEditDto);

                        await _companyIndustryAppService.DeleteCompanyIndustryByCompanyIdAsync(model.CompanyEditDto.Id.Value);

                        List <string> industryIds = model.CompanyEditDto.Industry.Split(',').ToList();
                        foreach (string industryId in industryIds)
                        {
                            CreateOrUpdateCompanyIndustryInput industryInput = new CreateOrUpdateCompanyIndustryInput();
                            CompanyIndustryEditDto             dto           = new CompanyIndustryEditDto()
                            {
                                CompanyId = model.CompanyEditDto.Id.Value, IndustryId = int.Parse(industryId)
                            };
                            industryInput.CompanyIndustryEditDto = dto;
                            await _companyIndustryAppService.CreateOrUpdateCompanyIndustryAsync(industryInput);
                        }

                        var relativeUser = _userAppService.Get(new EntityDto <long> {
                            Id = model.CompanyEditDto.UserId
                        }).Result;
                        relativeUser.UserType = UserType.Company;

                        if (model.CompanyAuthEditDto != null)
                        {
                            relativeUser.UserType = UserType.VipCompany;
                            await _companyAuthAppService.CreateOrUpdateCompanyAuthAsync(new CreateOrUpdateCompanyAuthInput()
                            {
                                CompanyAuthEditDto = model.CompanyAuthEditDto
                            });
                        }

                        var user = _userAppService.UpdateUser(relativeUser);


                        unitWork.Complete();
                    }
                    return(Json(new { success = true, msg = "" }));
                }
                catch (Exception e)
                {
                    return(Json(new { success = false, msg = "保存失败" }));
                }
            }
            return(Json(new { success = false, msg = "无操作权限" }));
        }