Exemplo n.º 1
0
        public async Task <IActionResult> OnPostAsync()
        {
            var _totaldeelementos = Request.Form.Count - 1;
            var _listaimagens     = new List <ImagensEnvio>();
            var _idperfil         = AppPerfilId;

            // PEGO A LISTA DE IMAGENS QUE EXISTE NO BANCO PARA COMPARAR COM O MODELO ENVIADO
            var _Listaimagensalbum =
                _context.GaleriaPerfilImagem
                .Where(x => x.GaleriaPerfilAlbumId == GaleriaPerfilAlbum.Id)
                .ToList();

            // OBTENDO O REGISTRO EXISTENTE NO BANCO PARA ALTERACAO COM O MODELO ENVIADO
            var registro =
                _context
                .GaleriaPerfilAlbum
                .Where(x => x.Id == GaleriaPerfilAlbum.Id)
                .FirstOrDefault();

            registro.Nome      = GaleriaPerfilAlbum.Nome;
            registro.Descricao = GaleriaPerfilAlbum.Descricao;

            _context.Attach(registro).State = EntityState.Modified;
            await _context.SaveChangesAsync();

            // CARREGO UMA LISTA COM AS IMAGENS ENVIADAS PELO MODELO
            var _listaModel = new List <GaleriaPerfilImagem>();

            for (int i = 0; i < _totaldeelementos; i++)
            {
                var _nomeimg = Request.Form["inputarq_" + i];
                var _des     = Request.Form["descricao_" + i].ToString();
                var _idimg   = Request.Form["idgaleriaimagem_" + i].ToString();
                var _urlimg  = Request.Form["urlgaleriaimagem_" + i].ToString();
                _des = string.IsNullOrEmpty(_des) ? "" : _des;

                if (!string.IsNullOrEmpty(_idimg))
                {
                    var _imagem = new GaleriaPerfilImagem()
                    {
                        Id                   = Convert.ToInt32(_idimg),
                        Descricao            = _des,
                        GaleriaPerfilAlbumId = GaleriaPerfilAlbum.Id,
                        Url                  = _urlimg
                    };

                    _listaModel.Add(_imagem);
                }
            }

            // RODO A LISTA CARREGADA E COMPARO COM A LISTA ENVIADA DO MODELO
            // VERIFICO SE FORAM EXCLUÍDAS IMAGENS DO ÁLBUM
            foreach (var _imagem in _Listaimagensalbum.OrderBy(x => x.Id))
            {
                var _imagemExiste = _listaModel.Where(x => x.Id == _imagem.Id).FirstOrDefault();

                // NÃO ACHEI NA LISTA ENVIADA
                if (_imagemExiste == null)
                {
                    // APAGO DO BANCO E REMOVO O BLOB DA NUVEM
                    var _exc_appgaleria_imagem =
                        _context.GaleriaPerfilImagem
                        .Where(x => x.Id == _imagem.Id).FirstOrDefault();

                    _context.GaleriaPerfilImagem.Remove(_exc_appgaleria_imagem);
                    await _context.SaveChangesAsync();

                    // PEGA NOME DO ARQUIVO
                    string _nomedoarq = "";
                    Uri    uri        = new Uri(_imagem.Url);
                    _nomedoarq = System.IO.Path.GetFileName(uri.LocalPath);

                    var _config = _context.AppPerfil
                                  .Include(x => x.AppConfiguracoes)
                                  .Include(x => x.AppConfiguracoes.AppConfiguracoes_Aplicativo)
                                  .Include(y => y.AppConfiguracoes.AppConfiguracoes_Azure)
                                  .FirstOrDefault();

                    await VerificadoresRetornos
                    .ApagarBlob(
                        _nomedoarq,
                        _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_AccountName,
                        _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_AccountKey,
                        _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_ContainerRaiz,
                        _config.AppConfiguracoes.AppConfiguracoes_Azure.UsarSimuladorLocal,
                        _config.AppConfiguracoes.AppConfiguracoes_Azure.EnderecoArmazLocal);
                }
                // ALTERO A DESCRICAO DA IMAGEM
                else
                {
                    var _ImagemEditada =
                        _context.GaleriaPerfilImagem
                        .Where(x => x.Id == _imagemExiste.Id).FirstOrDefault();

                    _ImagemEditada.Descricao = _imagemExiste.Descricao;

                    _context.Attach(_ImagemEditada).State = EntityState.Modified;
                    await _context.SaveChangesAsync();
                }
            }

            // NOVAS IMAGENS ADICIONADAS AO ALBUM
            if (Request.Form.Files.Count > 0)
            {
                for (int i = 0; i < _totaldeelementos; i++)
                {
                    var _nomeimg = Request.Form["inputarq_" + i];
                    var _des     = Request.Form["descricao_" + i].ToString();
                    _des = string.IsNullOrEmpty(_des) ? "" : _des;

                    var _buscafilearray =
                        Request.Form.Files
                        .Where(x => x.FileName == _nomeimg).FirstOrDefault();

                    if (_buscafilearray != null)
                    {
                        _listaimagens.Add(new ImagensEnvio()
                        {
                            GaleriaPerfilAlbumId = GaleriaPerfilAlbum.Id,
                            Url       = _buscafilearray.FileName.ToString(),
                            Descricao = _des,
                            Arquivo   = _buscafilearray
                        });
                    }
                }

                var _config = _context.AppPerfil
                              .Include(x => x.AppConfiguracoes)
                              .Include(x => x.AppConfiguracoes.AppConfiguracoes_Aplicativo)
                              .Include(y => y.AppConfiguracoes.AppConfiguracoes_Azure)
                              .FirstOrDefault();

                foreach (var item in _listaimagens)
                {
                    var _imagemLogotipo =
                        await VerificadoresRetornos
                        .EnviarImagemAzure(item.Arquivo, 512000, 0, 0,
                                           _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_AccountName,
                                           _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_AccountKey,
                                           _config.AppConfiguracoes.AppConfiguracoes_Azure._azureblob_ContainerRaiz,
                                           _config.AppConfiguracoes.AppConfiguracoes_Azure.UsarSimuladorLocal,
                                           _config.AppConfiguracoes.AppConfiguracoes_Azure.EnderecoArmazLocal);

                    Uri  uriResult;
                    bool result = Uri.TryCreate(_imagemLogotipo, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
                    if (result)
                    {
                        item.Url = _imagemLogotipo;
                    }
                    else
                    {
                        item.Url = "";
                    }
                }

                var _listarange = new List <Models.GaleriaPerfilImagem>();
                foreach (var imagem in _listaimagens)
                {
                    if (!string.IsNullOrEmpty(imagem.Url))
                    {
                        _listarange.Add(new Models.GaleriaPerfilImagem()
                        {
                            GaleriaPerfilAlbumId = imagem.GaleriaPerfilAlbumId,
                            Descricao            = imagem.Descricao,
                            Url = imagem.Url
                        });
                    }
                }

                if (_listarange.Count > 0)
                {
                    await _context.GaleriaPerfilImagem.AddRangeAsync(_listarange);

                    await _context.SaveChangesAsync();
                }
            }

            return(RedirectToPage("./Index"));
        }