public async Task <JsonResult> CadastrarComercio([FromBody] CadastroComercio cadastroComercio)
        {
            if (!string.IsNullOrEmpty(cadastroComercio.CNPJ) && !string.IsNullOrEmpty(cadastroComercio.MercadoEndereco) && !string.IsNullOrEmpty(cadastroComercio.RazaoSocial) &&
                !string.IsNullOrEmpty(cadastroComercio.MercadoTelefone) && cadastroComercio.IdUsuario != 0 && cadastroComercio.HoraInicio != DateTime.MinValue &&
                cadastroComercio.HoraFim != DateTime.MinValue)
            {
                try
                {
                    if (!await VerificaMercadoExistente(cadastroComercio.CNPJ))
                    {
                        var mercado = new MercadoViewModel()
                        {
                            MercadoTelefone = cadastroComercio.MercadoTelefone,
                            CNPJ            = cadastroComercio.CNPJ,
                            MercadoEndereco = cadastroComercio.MercadoEndereco,
                            RazaoSocial     = cadastroComercio.RazaoSocial,
                            IdUsuario       = cadastroComercio.IdUsuario,
                            HoraInicio      = cadastroComercio.HoraInicio,
                            HoraFim         = cadastroComercio.HoraFim
                        };



                        await Contexto.MercadoViewModel.AddAsync(mercado);

                        await Contexto.SaveChangesAsync();

                        return(Json(new { mensagem = "Sucesso", resultado = true }));
                    }
                    else
                    {
                        return(Json(new { mensagem = "CNPJ ja cadastrado", resultado = false }));
                    }
                }
                catch (Exception ex)
                {
                    return(Json(new { mensagem = ex.Message, resultado = false }));
                }
            }
            else
            {
                return(Json(new { mensagem = "Todos os campos devem ser preenchidos", resultado = false }));
            }
        }
        public MercadoViewModel Find(int topologiaId, int noId, IMapper _mapper)
        {
            NoViewModel bo = new NoAppService(_unitOfw).Create(noId, topologiaId, _mapper);
            //No no = _unitOfw.NoRepository.Get(y => y.Id == noId).FirstOrDefault();

            MercadoViewModel model = new MercadoViewModel
            {
                Familias = new SelectableEntityViewModel()
                {
                    Available = new FamiliaSelect().Select(topologiaId),
                    Selected  = new NoFamiliaSelect().Select(noId)
                },

                Items     = bo.Items,
                Elementos = bo.Elementos
            };

            // Produtos cadastrados no No
            List <string> produtoList = new NoProdutoSelect().Select(noId, _mapper).Select(p => p.Codigo).ToList();

            // + Produtos pertencentes as familias cadastradas no No. (As familias são selecionadas nas correntes de entrada)
            produtoList.AddRange(new NoFamiliaProdutoSelect().Select(noId).Select(p => p.Codigo).ToList());


            // Seleção dos Contratos que não sejam "Take Or Pay"
            model.Contratos = new SelectableEntityViewModel()
            {
                Available = new ContratoSelect().Select(topologiaId).Where(c => c.TipoEntidadeNome != "Take Or Pay" &&
                                                                           (new ProdutoContratoSelect().Select(c.Id).Where(p => produtoList.Contains(p.Codigo)).Count() > 0 ||
                                                                            new ProdutoFamiliaContratoSelect().Select(c.Id).Where(p => produtoList.Contains(p.Codigo)).Count() > 0)),
                Selected = new MercadoContratoSelect().Select(noId)
            };

            model.IsSpot = (model.Contratos.Selected.Count() == 0);

            return(model);
        }