public IActionResult Create(EstablishmentFormViewModel obj)
        {
            //verifica se os campos principais foram preenchidos
            if (obj.Establishment.CorporateName != null && (obj.Establishment.CNPJ != null && isCNPJAsync(obj.Establishment.CNPJ).Result == true) && obj.Establishment.Id_Category != 0 && obj.Address.Id_City != 0)
            {
                using (var transaction = _FitcardContext.Database.BeginTransaction())
                {
                    try
                    {
                        //endereço é obrigatorio e só usamos o id_city para relacionar no bd
                        obj.Establishment.Id_Address = _AddressService.InsertAddress(obj.Address);
                        if (_EstablishmentService.InsertEstablishment(obj.Establishment, obj.Contact))
                        {
                            obj.Contact.Id_Establishment = obj.Establishment.idEstablishment;
                            _ContactService.InsertContact(obj.Contact);

                            obj.Account.Id_Establishment = obj.Establishment.idEstablishment;
                            if (!_AccountService.InsertAccount(obj.Account))
                            {
                                //agencia e conta não foram preenchidos corretamente, tendo só um dos campos sido preenchidos
                                transaction.Rollback();
                                TempData["info"] = "É necessário informar conta e agência, um campo somente preenchido não é valido";
                            }
                            else
                            {
                                transaction.Commit();
                                TempData["info"] = "Cadastro Realizado com sucesso!";
                            }
                        }
                        else
                        {
                            //meio de contato não é valido para a categoria 1
                            transaction.Rollback();
                            TempData["info"] = "É necessário um meio de contato para a categoria de supermercado";
                        }
                    }
                    catch
                    {
                        transaction.Rollback();
                        return(RedirectToAction("Error", "Home", new ErrorViewModel {
                            Message = "Erro ao tentar acessar e/ou inserir dados no banco"
                        }));
                    }
                }
            }
            else
            {
                //campos obrigatorios não foram totalmente preenchidos
                TempData["info"] = "É necessário preencher todos os campos obrigatórios ou o campo CNPJ não é valido";
            }
            return(RedirectToAction(nameof(Create)));
        }
 public IActionResult Create()
 {
     try
     {
         var Status    = _StatusService.FindAll();
         var Category  = _CategoryService.ListCategory();
         var ViewModel = new EstablishmentFormViewModel {
             Status = Status, Category = Category
         };
         ViewBag.UF       = _UFService.ListUF();
         ViewBag.Register = DateTime.UtcNow;
         ViewBag.Message  = TempData["info"];
         return(View(ViewModel));
     }
     catch
     {
         return(RedirectToAction("Error", "Home", new ErrorViewModel {
             Message = "Erro ao tentar conectar com o banco de dados"
         }));
     }
 }