public IActionResult Edit(int id)
        {
            Company                   company                   = companyService.GetCompanies().FirstOrDefault(c => c.Id == id);
            RegistrationData          registrationData          = companyService.FindRegistrationDataById(company.RegistrationDataId);
            CompanyViewModel          companyViewModel          = new CompanyViewModel(company);
            RegistrationDataViewModel registrationDataViewModel = new RegistrationDataViewModel(registrationData);
            FactAddressViewModel      factAddressViewModel      = new FactAddressViewModel();
            ContactInfoViewModel      contactInfoViewModel      = new ContactInfoViewModel
            {
                CityPhone   = company.ContactInfo.CityPhone,
                MobilePhone = company.ContactInfo.MobilePhone,
                Email       = company.ContactInfo.Email
            };
            Address factAddress = companyService.FindFactAddressByCompanyId(company.Id);

            if (factAddress != null)
            {
                factAddressViewModel.CountryId    = factAddress.CountryId;
                factAddressViewModel.City         = factAddress.City;
                factAddressViewModel.Street       = factAddress.Street;
                factAddressViewModel.HouseAddress = factAddress.HouseAddress;
                factAddressViewModel.PostCode     = factAddress.PostCode;
            }

            LegalAddressViewModel legalAddressViewModel = new LegalAddressViewModel();
            Address legalAddress = companyService.FindLegalAddressByCompanyId(company.Id);

            if (factAddress != null)
            {
                legalAddressViewModel.CountryId    = legalAddress.CountryId;
                legalAddressViewModel.City         = legalAddress.City;
                legalAddressViewModel.Street       = legalAddress.Street;
                legalAddressViewModel.HouseAddress = legalAddress.HouseAddress;
                legalAddressViewModel.PostCode     = legalAddress.PostCode;
            }

            CompanyEditViewModel model = new CompanyEditViewModel
            {
                FactAddress      = factAddressViewModel,
                LegalAddress     = legalAddressViewModel,
                Company          = companyViewModel,
                RegistrationData = registrationDataViewModel,
                ContactInfo      = contactInfoViewModel
            };

            model.Countries             = selectListService.GetCountries();
            model.LegalForms            = selectListService.GetLegalForms();
            model.PropertyTypes         = selectListService.GetPropertyTypes();
            model.Residencies           = selectListService.GetResidencies();
            model.TaxInspections        = selectListService.GetTaxInspections();
            ViewBag.CountriesForAddress = GetCountriesForAddress();

            return(View(model));
        }
        public ActionResult RegistrationData(RegistrationDataViewModel model)
        {
            if (!ModelState.IsValid) {
                return View(model);
            }

            var user = this.GetAuthUser();
            var context = ApplicationDbContext.Create();
            var regData = context.RegistrationDatas.SingleOrDefault(x => x.User.Id == user.Id);
            if (regData == null) {
                regData = new RegistrationData();
                context.RegistrationDatas.Add(regData);
            }

            regData.IsResident = model.IsResident;
            regData.LegalForm = context.LegalForms.Single(x => x.Id == model.LegalFormId);
            regData.OrganizationName = model.OrganizationName;
            regData.ProviderType = context.ProviderTypes.Single(x => x.Id == model.ProviderTypeId);
            regData.StateRegistrationCertificateDate = model.StateRegistrationCertificateDate;
            regData.StateRegistrationCertificateIssuingAuthority = model.StateRegistrationCertificateIssuingAuthority;
            regData.StateRegistrationCertificateNumber = model.StateRegistrationCertificateNumber;
            regData.User = context.Users.Single(x => x.Id == user.Id);

            if (!model.IsResident) {
                regData.Country = context.Countries.Single(x => x.Id == model.CountryId);
                regData.TaxId = model.TaxId;
                regData.Xin = string.Empty;
            }
            else {
                regData.Xin = model.Xin;
                regData.Country = null;
                regData.TaxId = string.Empty;
            }
            context.SaveChanges();
            return RedirectToAction("Index");
        }