private static void MapControloAuts(GISADataset.FRDBaseRow frdRow, List<string> cas, Int32? selector, string messageTag, TipoNoticiaAut tna, UnidadeInformacional ui)
        {
            if (cas != null && cas.Count > 0)
            {
                cas.ForEach(termo =>
                {
                    var d = GisaDataSetHelper.GetInstance().Dicionario.Cast<GISADataset.DicionarioRow>().SingleOrDefault(r => r.Termo.Equals(termo));

                    if (d == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, messageTag, termo, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var caRow = d.GetControloAutDicionarioRows()
                                    .Where(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada)
                                    .Select(cad => cad.ControloAutRow)
                                    .SingleOrDefault(ca => ca.IDTipoNoticiaAut == (int)tna);

                    if (caRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, messageTag, termo, ExceptionHelper.ERR_VALOR_INVALIDO);

                    if (caRow.IDTipoNoticiaAut == (int)TipoNoticiaAut.EntidadeProdutora)
                        createSFRDAutorRow(frdRow, caRow);
                    else
                        createIndexFRDCARow(frdRow, caRow, selector);
                });
            }
        }
        private static void ValidaCamposObrigatorios(UnidadeInformacional ui)
        {
            if (ui.identificador == null || ui.identificador.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDENTIFICADOR, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (ui.nivel == null || ui.nivel.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_NIVEL, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (ui.codigoRef == null || ui.codigoRef.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_CODIGOREF, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (ui.titulo == null || ui.titulo.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_TITULO, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if ((ui.idNivelSuperior == null || ui.idNivelSuperior.Length == 0) && (ui.entidadesProdutoras == null || ui.entidadesProdutoras.Count == 0))
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR + ", " + ImportExcel.UI_ENTIDADESPRODUTORAS, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);
        }
        private static void UIsToGISADatasetRow(UnidadeInformacional ui)
        {
            var nRow = createNivelRow();
            nRow.IDTipoNivel = TipoNivel.DOCUMENTAL;

            if (!GUIHelper.GUIHelper.CheckValidCodigoParcialForTipo(ui.codigoRef, TipoNivelRelacionado.D))
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_CODIGOREF, ui.codigoRef, ExceptionHelper.ERR_VALOR_INVALIDO);
            nRow.Codigo = ui.codigoRef;

            var ndRow = createNivelDesignadoRow(); // titulo
            ndRow.Designacao = ui.titulo;
            ndRow.NivelRow = nRow;

            var frdRow = createFRDBaseRow();
            frdRow.IDTipoFRDBase = 1;
            frdRow.NivelRow = nRow;
            frdRow.NotaDoArquivista = ui.notaArquivista;
            frdRow.RegrasOuConvencoes = ui.regras;

            var sfrddtRow = createSFRDDatasProducaoRow(ui);
            sfrddtRow.FRDBaseRow = frdRow;

            var sfrddsRow = createSFRDDimensaoSuporteRow(ui);
            sfrddsRow.FRDBaseRow = frdRow;

            var sfrdcRow = createSFRDContextoRow(ui);
            sfrdcRow.FRDBaseRow = frdRow;

            var sfrdaRow = createSFRDAvaliacaoRow(ui);
            sfrdaRow.FRDBaseRow = frdRow;

            var sfrdceRow = createSFRDConteudoEEstruturaRow();
            sfrdceRow.FRDBaseRow = frdRow;
            sfrdceRow.ConteudoInformacional = ui.conteudoInformacional;
            sfrdceRow.Incorporacao = ui.incorporacoes;

            if (ui.tradicaoDocumental.Count > 0)
            {
                ui.tradicaoDocumental.ForEach(td =>
                {
                    var ttdRow = GisaDataSetHelper.GetInstance().TipoTradicaoDocumental.Cast<GISADataset.TipoTradicaoDocumentalRow>().SingleOrDefault(ttd => ttd.Designacao.Equals(td));
                    if (ttdRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_TRADICAODOCUMENTAL, td, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdttdRow = createSFRDTradicaoDocumentalRow();
                    sfrdttdRow.FRDBaseRow = frdRow;
                    sfrdttdRow.TipoTradicaoDocumentalRow = ttdRow;
                });
            }

            if (ui.ordenacao.Count > 0)
            {
                ui.ordenacao.ForEach(o =>
                {
                    var ordRow = GisaDataSetHelper.GetInstance().TipoOrdenacao.Cast<GISADataset.TipoOrdenacaoRow>().SingleOrDefault(ord => ord.Designacao.Equals(o));
                    if (ordRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ORDENACAO, o, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdordRow = createSFRDOrdenacaoRow();
                    sfrdordRow.FRDBaseRow = frdRow;
                    sfrdordRow.TipoOrdenacaoRow = ordRow;
                });
            }

            var sfrdcaRow = createSFRDCondicaoDeAcessoRow(ui);
            sfrdcaRow.FRDBaseRow = frdRow;

            if (ui.lingua.Count > 0)
            {
                ui.lingua.ForEach(lg =>
                {
                    var lRow = GisaDataSetHelper.GetInstance().Iso639.Cast<GISADataset.Iso639Row>().SingleOrDefault(l => l.LanguageNameEnglish.Equals(lg));
                    if (lRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_LINGUA, lg, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdlRow = createSFRDLinguaRow();
                    sfrdlRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                    sfrdlRow.Iso639Row = lRow;
                });
            }

            if (ui.alfabeto.Count > 0)
            {
                ui.alfabeto.ForEach(alf =>
                {
                    var aRow = GisaDataSetHelper.GetInstance().Iso15924.Cast<GISADataset.Iso15924Row>().SingleOrDefault(a => a.ScriptNameEnglish.Equals(alf));
                    if (aRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ALFABETO, alf, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdalfRow = createSFRDAlfabetoRow();
                    sfrdalfRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                    sfrdalfRow.Iso15924Row = aRow;
                });
            }

            if (ui.formaSuporte.Count > 0)
            {
                ui.formaSuporte.ForEach(fs =>
                {
                    var fsRow = GisaDataSetHelper.GetInstance().TipoFormaSuporteAcond.Cast<GISADataset.TipoFormaSuporteAcondRow>().SingleOrDefault(tfsa => tfsa.Designacao.Equals(fs));
                    if (fsRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_FORMASUPORTE, fs, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdtfsaRow = createSFRDFormaSuporteAcondRow();
                    sfrdtfsaRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                    sfrdtfsaRow.TipoFormaSuporteAcondRow = fsRow;
                });
            }

            if (ui.materialSuporte.Count > 0)
            {
                ui.materialSuporte.ForEach(ms =>
                {
                    var msRow = GisaDataSetHelper.GetInstance().TipoMaterialDeSuporte.Cast<GISADataset.TipoMaterialDeSuporteRow>().SingleOrDefault(tms => tms.Designacao.Equals(ms));
                    if (msRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_MATERIALSUPORTE, ms, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdtmsRow = createSFRDMaterialDeSuporteRow();
                    sfrdtmsRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                    sfrdtmsRow.TipoMaterialDeSuporteRow = msRow;
                });
            }

            if (ui.tecnicaRegisto.Count > 0)
            {
                ui.tecnicaRegisto.ForEach(tr =>
                {
                    var trRow = GisaDataSetHelper.GetInstance().TipoTecnicasDeRegisto.Cast<GISADataset.TipoTecnicasDeRegistoRow>().SingleOrDefault(ttr => ttr.Designacao.Equals(tr));
                    if (trRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_TECNICAREGISTO, tr, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var sfrdtrRow = createSFRDTecnicasDeRegistoRow();
                    sfrdtrRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                    sfrdtrRow.TipoTecnicasDeRegistoRow = trRow;
                });
            }

            if (ui.estadoConservacao.Length > 0)
            {
                var tecRow = GisaDataSetHelper.GetInstance().TipoEstadoDeConservacao.Cast<GISADataset.TipoEstadoDeConservacaoRow>().SingleOrDefault(tec => tec.Designacao.Equals(ui.estadoConservacao));
                if (tecRow == null)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ESTADOCONSERVACAO, ui.estadoConservacao, ExceptionHelper.ERR_VALOR_INVALIDO);

                var sfrdecRow = createSFRDEstadoDeConservacaoRow();
                sfrdecRow.SFRDCondicaoDeAcessoRow = sfrdcaRow;
                sfrdecRow.TipoEstadoDeConservacaoRow = tecRow;
            }

            var sfrddaRow = createSFRDDocumentacaoAssociadaRow(ui);
            sfrddaRow.FRDBaseRow = frdRow;

            var sfrdngRow = createSFRDNotaGeralRow(ui);
            sfrdngRow.FRDBaseRow = frdRow;

            var tUserRow = SessionHelper.GetGisaPrincipal().TrusteeUserAuthor ?? default(GISADataset.TrusteeUserRow);
            if (ui.autorDescricao != null && ui.autorDescricao.Length > 0)
            {
                var tRow = GisaDataSetHelper.GetInstance().Trustee.Cast<GISADataset.TrusteeRow>().SingleOrDefault(t => t.Name.Equals(ui.autorDescricao));
                if (tRow == null)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_AUTORDESCRICAO, ui.autorDescricao, ExceptionHelper.ERR_VALOR_INVALIDO);
                else if (!tRow.GetTrusteeUserRows().First().IsAuthority)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_AUTORDESCRICAO, ui.autorDescricao, ExceptionHelper.ERR_VALOR_INVALIDO);
                    
            }

            DateTime data = DateTime.Now;
            if (ui.dataAutoria != null && ui.dataAutoria.Length > 0)
            {
                var convertedDate = ConvertToDateTime(ui.dataAutoria);

                if (convertedDate == default(DateTime))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_DATAAUTORIA, ui.dataAutoria, ExceptionHelper.ERR_VALOR_INVALIDO);
                else
                    data = convertedDate;
            }

            if (ui.entidadesProdutoras != null && ui.entidadesProdutoras.Count > 0 && ui.idNivelSuperior != null && ui.idNivelSuperior.Length > 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR + ", " + ImportExcel.UI_ENTIDADESPRODUTORAS, ui.entidadesProdutoras + ", " + ui.idNivelSuperior, ExceptionHelper.ERR_VALOR_INVALIDO);

            // TODO: validar hierarquia (impedir que existam casos tipo: documento > sub-documento > sub-documento)
            if (ui.entidadesProdutoras != null && ui.entidadesProdutoras.Count > 0)
            {
                ui.entidadesProdutoras.ForEach(ep =>
                {
                    var d = GisaDataSetHelper.GetInstance().Dicionario.Cast<GISADataset.DicionarioRow>().SingleOrDefault(r => r.Termo.Equals(ep));

                    if (d == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ENTIDADESPRODUTORAS, ep, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var nCARow = d.GetControloAutDicionarioRows()
                                    .Single(cad => cad.IDTipoControloAutForma == (long)TipoControloAutForma.FormaAutorizada)
                                    .ControloAutRow.GetNivelControloAutRows().Single().NivelRow;

                    createRelacaoHierarquicaRow(nRow, nCARow, TipoNivelRelacionado.D);
                    //createTipoDocumentoRow(ui, nRow, TipoNivelRelacionado.D);
                });
            }
            else if (ui.idNivelSuperior != null && ui.idNivelSuperior.Length > 0)
            {
                if (ui.idNivelSuperior.StartsWith("gisa:"))
                {
                    var nUpperRow = GisaDataSetHelper.GetInstance().Nivel.Cast<GISADataset.NivelRow>().SingleOrDefault(r => r.ID == System.Convert.ToInt64(ui.idNivelSuperior.Replace("gisa:", "")));
                    if (nUpperRow == null)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR, ui.idNivelSuperior, ExceptionHelper.ERR_VALOR_INVALIDO);

                    var rhRow = nUpperRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First();
                    var idNTR = rhRow.IDTipoNivelRelacionado;

                    if (idNTR != TipoNivelRelacionado.SR && idNTR != TipoNivelRelacionado.SSR && idNTR != TipoNivelRelacionado.D)
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR2, ui.idNivelSuperior, ExceptionHelper.ERR_VALOR_INVALIDO);
                    
                    var idTipoNivelRelacionado = rhRow.IDTipoNivelRelacionado == TipoNivelRelacionado.D ? TipoNivelRelacionado.SD : TipoNivelRelacionado.D;

                    createRelacaoHierarquicaRow(nRow, nUpperRow, idTipoNivelRelacionado);
                }
                else
                {
                    if (!unidadesInformacionais.ContainsKey(ui.idNivelSuperior))
                        ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR, ui.idNivelSuperior, ExceptionHelper.ERR_ID_NAO_LISTADO);

                    if (!uiRows.ContainsKey(ui.idNivelSuperior))
                        UIsToGISADatasetRow(unidadesInformacionais[ui.idNivelSuperior]);
                    
                    var nUpperRow = uiRows[ui.idNivelSuperior];
                    createRelacaoHierarquicaRow(nRow, nUpperRow, TipoNivelRelacionado.SD);
                    //createNivelDocumentoSimples(ui, nRow);
                }
            }
            else
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_IDNIVELSUPERIOR + ", " + ImportExcel.UI_ENTIDADESPRODUTORAS, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (ui.unidadesFisicas.Count > 0)
            {
                ui.unidadesFisicas.ForEach(uf =>
                {
                    if (uf.StartsWith("gisa_uf:"))
                    {
                        var codeParts = uf.Replace("gisa_uf:", "").Split('/');
                        var codeED = codeParts[0];
                        var codeUF = codeParts[1];

                        var ufRows = GisaDataSetHelper.GetInstance().Nivel.Cast<GISADataset.NivelRow>().Where(r => r.Codigo.Equals(codeUF));
                        if (ufRows.Count() == 0) 
                            ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_UNIDADESFISICAS, uf, ExceptionHelper.ERR_VALOR_INVALIDO);
                            
                        var ufRow = ufRows.SingleOrDefault(row => row.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().Single().NivelRowByNivelRelacaoHierarquicaUpper.Codigo.Equals(codeED));
                        if (ufRow == null)
                            ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_UNIDADESFISICAS, uf, ExceptionHelper.ERR_VALOR_INVALIDO);

                        var sfrdufRow = createSFRDUnidadeFisicaRow(frdRow, ufRow);
                        if (ui.unidadesFisicas.Count() == 1)
                            sfrdufRow.Cota = ui.cotaDoc;
                    }
                    else
                    {
                        if (!unidadesFisicas.ContainsKey(uf))
                            ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_UNIDADESFISICAS, uf, ExceptionHelper.ERR_ID_NAO_LISTADO);

                        if (!ufRows.ContainsKey(uf))
                            UFsToGISADatasetRows(unidadesFisicas[uf]);

                        var ufRow = ufRows[uf];
                        var sfrdufRow = createSFRDUnidadeFisicaRow(frdRow, ufRow);
                        if (ui.unidadesFisicas.Count() == 1)
                            sfrdufRow.Cota = ui.cotaDoc;
                    }
                });
            }

            MapControloAuts(frdRow, ui.autores, null, ImportExcel.UI_AUTORES, TipoNoticiaAut.EntidadeProdutora, ui);
            MapControloAuts(frdRow, ui.modelo, null, ImportExcel.UI_MODELO, TipoNoticiaAut.Modelo, ui);
            MapControloAuts(frdRow, ui.diplomaLegal, null, ImportExcel.UI_DIPLOMALEGAL, TipoNoticiaAut.Diploma, ui);
            MapControloAuts(frdRow, ui.onomasticos, null, ImportExcel.UI_ONOMASTICOS, TipoNoticiaAut.Onomastico, ui);
            MapControloAuts(frdRow, ui.geograficos, null, ImportExcel.UI_GEOGRAFICOS, TipoNoticiaAut.ToponimicoGeografico, ui);
            MapControloAuts(frdRow, ui.ideograficos, null, ImportExcel.UI_IDEOGRAFICOS, TipoNoticiaAut.Ideografico, ui);
            if (ui.tipoInformacional.Length > 0)
                MapControloAuts(frdRow, new List<string>() { ui.tipoInformacional }, -1, ImportExcel.UI_TIPOINFORMACIONAL, TipoNoticiaAut.TipologiaInformacional, ui);

            registos.Add(frdRow, new Registo() { CurrentFRDBase = frdRow, tuOperator = SessionHelper.GetGisaPrincipal().TrusteeUserOperator, tuAuthor = tUserRow, data = data });

            GisaDataSetHelper.GetInstance().SFRDAgrupador.AddSFRDAgrupadorRow(frdRow, "", new byte[] { }, 0);

            PermissoesHelper.AddNewNivelGrantPermissions(nRow, nRow.GetRelacaoHierarquicaRowsByNivelRelacaoHierarquica().First().NivelRowByNivelRelacaoHierarquicaUpper);
            if (sfrdaRow.Publicar)
                PermissoesHelper.ChangeDocPermissionPublicados(nRow.ID, sfrdaRow.Publicar);

            uiRows[ui.identificador] = nRow;
        }
 private static GISADataset.SFRDCondicaoDeAcessoRow createSFRDCondicaoDeAcessoRow(UnidadeInformacional ui)
 {
     var sfrdcaRow = GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.NewSFRDCondicaoDeAcessoRow();
     sfrdcaRow.CondicaoDeAcesso = ui.condicoesAcesso;
     sfrdcaRow.CondicaoDeReproducao = ui.condicoesReproducao;
     sfrdcaRow.AuxiliarDePesquisa = ui.instrumentosPesquisa;
     sfrdcaRow.EstatutoLegal = "";
     sfrdcaRow.isDeleted = 0;
     sfrdcaRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDCondicaoDeAcesso.AddSFRDCondicaoDeAcessoRow(sfrdcaRow);
     return sfrdcaRow;
 }
 private static GISADataset.SFRDDocumentacaoAssociadaRow createSFRDDocumentacaoAssociadaRow(UnidadeInformacional ui)
 {
     var sfrddaRow = GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.NewSFRDDocumentacaoAssociadaRow();
     sfrddaRow.ExistenciaDeOriginais = ui.existenciaOriginais;
     sfrddaRow.ExistenciaDeCopias = ui.existenciaCopias;
     sfrddaRow.NotaDePublicacao = ui.notaPublicacao;
     sfrddaRow.UnidadesRelacionadas = ui.unidadesDescricaoRelacionadas;
     sfrddaRow.isDeleted = 0;
     sfrddaRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDDocumentacaoAssociada.AddSFRDDocumentacaoAssociadaRow(sfrddaRow);
     return sfrddaRow;
 }
        private static GISADataset.SFRDAvaliacaoRow createSFRDAvaliacaoRow(UnidadeInformacional ui)
        {
            var sfrdaRow = GisaDataSetHelper.GetInstance().SFRDAvaliacao.NewSFRDAvaliacaoRow();

            if (ui.destinoFinal.Length > 0)
            {
                if (!destinoFinal.Contains(ui.destinoFinal))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_DESTINOFINAL, ui.destinoFinal, ExceptionHelper.ERR_VALOR_INVALIDO);
                else
                    sfrdaRow.Preservar = ui.destinoFinal.Equals("Conservação") ? true : false;
            }
            else
                sfrdaRow["Preservar"] = DBNull.Value;

            if (ui.publicacao.Length > 0)
            {
                if (!isValidBool(ui.publicacao))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_PUBLICACAO, ui.publicacao, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrdaRow.Publicar = System.Convert.ToBoolean(System.Convert.ToInt32(ui.publicacao));
            }
            else
                sfrdaRow.Publicar = false;

            sfrdaRow.IDPertinencia = 1;
            sfrdaRow.IDDensidade = 1;
            sfrdaRow.IDSubdensidade = 1;
            sfrdaRow.Observacoes = "";
            sfrdaRow.AvaliacaoTabela = false;
            sfrdaRow.isDeleted = 0;
            sfrdaRow.Versao = new byte[] { };
            GisaDataSetHelper.GetInstance().SFRDAvaliacao.AddSFRDAvaliacaoRow(sfrdaRow);
            return sfrdaRow;
        }
 private static GISADataset.SFRDContextoRow createSFRDContextoRow(UnidadeInformacional ui)
 {
     var sfrdcRow = GisaDataSetHelper.GetInstance().SFRDContexto.NewSFRDContextoRow();
     sfrdcRow.HistoriaAdministrativa = ui.historiaAdministrativa;
     sfrdcRow.HistoriaCustodial = ui.historiaArquivistica;
     sfrdcRow.FonteImediataDeAquisicao = ui.fonteAquisicaoOuTransferencia;
     sfrdcRow.SerieAberta = true;
     sfrdcRow.isDeleted = 0;
     sfrdcRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDContexto.AddSFRDContextoRow(sfrdcRow);
     return sfrdcRow;
 }
 private static GISADataset.SFRDNotaGeralRow createSFRDNotaGeralRow(UnidadeInformacional ui)
 {
     var sfrdngRow = GisaDataSetHelper.GetInstance().SFRDNotaGeral.NewSFRDNotaGeralRow();
     sfrdngRow.NotaGeral = ui.notas;
     sfrdngRow.isDeleted = 0;
     sfrdngRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDNotaGeral.AddSFRDNotaGeralRow(sfrdngRow);
     return sfrdngRow;
 }
 private static GISADataset.SFRDDimensaoSuporteRow createSFRDDimensaoSuporteRow(UnidadeInformacional ui)
 {
     var sfrddsRow = GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.NewSFRDDimensaoSuporteRow();
     sfrddsRow.Nota = ui.dimensaoUnidadeInformacional;
     sfrddsRow.isDeleted = 0;
     sfrddsRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDDimensaoSuporte.AddSFRDDimensaoSuporteRow(sfrddsRow);
     return sfrddsRow;
 }
        private static GISADataset.SFRDDatasProducaoRow createSFRDDatasProducaoRow(UnidadeInformacional ui)
        {
            var sfrddtRow = GisaDataSetHelper.GetInstance().SFRDDatasProducao.NewSFRDDatasProducaoRow();
            if (ui.anoInicio.Length > 0)
            {
                if (!DateHelper.IsValidYear(ui.anoInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ANOINICIO, ui.anoInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioAno = ui.anoInicio;
            }

            if (ui.mesInicio.Length > 0)
            {
                if (!DateHelper.IsValidMonth(ui.mesInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_MESINICIO, ui.mesInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioMes = ui.mesInicio;
            }

            if (ui.diaInicio.Length > 0)
            {
                if (!DateHelper.IsValidDay(ui.diaInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_DIAINICIO, ui.diaInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioDia = ui.diaInicio;
            }

            if (ui.atribuidaInicio.Length > 0)
            {
                if (!isValidBool(ui.atribuidaInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ATRIBUIDAINICIO, ui.atribuidaInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioAtribuida = System.Convert.ToBoolean(System.Convert.ToInt32(ui.atribuidaInicio));
            }
            else
                sfrddtRow.InicioAtribuida = false;

            if (ui.dataIncerta.Length > 0)
            {
                if (!dataIncerta.Contains(ui.dataIncerta))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_DATAINCERTA, ui.dataIncerta, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioTexto = ui.dataIncerta;
            }

            if (ui.anoFim.Length > 0)
            {
                if (!DateHelper.IsValidYear(ui.anoFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ANOFIM, ui.anoFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimAno = ui.anoFim;
            }

            if (ui.mesFim.Length > 0)
            {
                if (!DateHelper.IsValidMonth(ui.mesFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_MESFIM, ui.mesFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimMes = ui.mesFim;
            }

            if (ui.diaFim.Length > 0)
            {
                if (!DateHelper.IsValidDay(ui.diaFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_DIAFIM, ui.diaFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimDia = ui.diaFim;
            }

            if (ui.atribuidaFim.Length > 0)
            {
                if (!isValidBool(ui.atribuidaInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_DOCUMENTOS, ui.identificador, ImportExcel.UI_ATRIBUIDAFIM, ui.atribuidaFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimAtribuida = System.Convert.ToBoolean(System.Convert.ToInt32(ui.atribuidaFim));
            }
            else
                sfrddtRow.FimAtribuida = false;


            sfrddtRow.FimTexto = "";
            sfrddtRow.isDeleted = 0;
            sfrddtRow.Versao = new byte[] { };
            GisaDataSetHelper.GetInstance().SFRDDatasProducao.AddSFRDDatasProducaoRow(sfrddtRow);
            return sfrddtRow;
        }