//Persistir o objecto e salvar na base de dados
        private bool inserir(GaleriaFoto OGaleriaFoto)
        {
            OGaleriaFoto.setDefaultInsertValues();

            db.GaleriaFoto.Add(OGaleriaFoto);

            db.SaveChanges();

            return(OGaleriaFoto.id > 0);
        }
        //Verificar se deve-se atualizar um registro existente ou criar um novo
        public bool salvar(GaleriaFoto OGaleriaFoto, List <HttpPostedFileBase> listaArquivos)
        {
            bool flagSucesso = false;

            if (OGaleriaFoto.id > 0)
            {
                flagSucesso = this.atualizar(OGaleriaFoto);
            }

            if (OGaleriaFoto.id == 0)
            {
                flagSucesso = this.inserir(OGaleriaFoto);
            }

            listaArquivos = listaArquivos.Where(x => x != null).ToList();

            if (flagSucesso && listaArquivos.Any())
            {
                foreach (HttpPostedFileBase OFoto in listaArquivos)
                {
                    var OArquivo = new ArquivoUpload();

                    OArquivo.idReferenciaEntidade = OGaleriaFoto.id;

                    OArquivo.entidade = EntityTypes.GALERIAFOTO;

                    var listaThumbs = new List <ThumbDTO>();

                    listaThumbs.Add(new ThumbDTO {
                        folderName = "home", height = 178, width = 0
                    });

                    listaThumbs.Add(new ThumbDTO {
                        folderName = "home-370x246", height = 246, width = 370
                    });

                    listaThumbs.Add(new ThumbDTO {
                        folderName = "sistema", height = 50, width = 0
                    });

                    listaThumbs.Add(new ThumbDTO {
                        folderName = "interna", height = 100, width = 0
                    });

                    this.OArquivoUploadFotoBL.salvar(OArquivo, OFoto, "", listaThumbs);
                }
            }

            return(flagSucesso);
        }
        //
        private DefaultDTO montarRetorno(GaleriaFoto OGaleria)
        {
            var listaFotos = this.OArquivoUploadFotoBL.listar(OGaleria.id, EntityTypes.GALERIAFOTO, "S")
                             .OrderBy(x => x.ordem).ThenBy(x => x.id).ToList();

            var listaFotosPaginacao = listaFotos.ToPagedList(UtilRequest.getNroPagina(), UtilRequest.getNroRegistros());

            var listaFotosRetorno = new List <object>();

            foreach (var OFoto in listaFotosPaginacao)
            {
                var DadosFoto = new {
                    OFoto.id,
                    OFoto.legenda,
                    urlFotoOriginal = OFoto.linkImagem(),
                    urlFotoThumb    = OFoto.linkImagem("home")
                };

                listaFotosRetorno.Add(DadosFoto);
            }

            var Dados = new {
                OGaleria.id,
                OGaleria.idTipoGaleria,
                OGaleria.titulo,
                OGaleria.chamada,
                OGaleria.descricao,
                OGaleria.dtGaleria,
                OGaleria.dtCadastro,
                listaFotos = listaFotosRetorno
            };

            var ORetorno = new DefaultDTO();

            ORetorno.carregarDadosPaginacao(listaFotosPaginacao);
            ORetorno.flagErro        = false;
            ORetorno.listaResultados = Dados;

            return(ORetorno);
        }
        //Persistir o objecto e atualizar informações
        private bool atualizar(GaleriaFoto OGaleriaFoto)
        {
            OGaleriaFoto.setDefaultUpdateValues();

            //Localizar existentes no banco
            GaleriaFoto dbGaleriaFoto = this.carregar(OGaleriaFoto.id);

            if (dbGaleriaFoto == null)
            {
                return(false);
            }

            var GaleriaFotoEntry = db.Entry(dbGaleriaFoto);

            GaleriaFotoEntry.CurrentValues.SetValues(OGaleriaFoto);

            GaleriaFotoEntry.ignoreFields <GaleriaFoto>();

            db.SaveChanges();

            return(OGaleriaFoto.id > 0);
        }