private static GISADataset.SFRDUFDescricaoFisicaRow createSFRDUFDescricaoFisicaRow(UnidadeFisica uf)
        {
            var sfrdufdfRow = default(GISADataset.SFRDUFDescricaoFisicaRow);
            sfrdufdfRow = GisaDataSetHelper.GetInstance().SFRDUFDescricaoFisica.NewSFRDUFDescricaoFisicaRow();

            sfrdufdfRow["MedidaAltura"] = DBNull.Value;
            if (uf.altura.Length > 0)
            {
                if (MathHelper.IsDecimal(uf.altura))
                    sfrdufdfRow.MedidaAltura = System.Convert.ToDecimal(uf.altura);
                else
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_ALTURA, uf.altura, ExceptionHelper.ERR_VALOR_INVALIDO);
            }

            sfrdufdfRow["MedidaLargura"] = DBNull.Value;
            if (uf.largura.Length > 0)
            {
                if (MathHelper.IsDecimal(uf.largura))
                    sfrdufdfRow.MedidaLargura = System.Convert.ToDecimal(uf.largura);
                else
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_LARGURA, uf.largura, ExceptionHelper.ERR_VALOR_INVALIDO);
            }

            sfrdufdfRow["MedidaProfundidade"] = DBNull.Value;
            if (uf.profundidade.Length > 0)
            {
                if (MathHelper.IsDecimal(uf.profundidade))
                    sfrdufdfRow.MedidaProfundidade = System.Convert.ToDecimal(uf.profundidade);
                else
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_PROFUNDIDADE, uf.profundidade, ExceptionHelper.ERR_VALOR_INVALIDO);
            }

            sfrdufdfRow.TipoAcondicionamentoRow = GisaDataSetHelper.GetInstance().TipoAcondicionamento.Cast<GISADataset.TipoAcondicionamentoRow>().First();
            if (uf.tipo.Length > 0)
            {
                var tipoAcondicionamentoRow = GisaDataSetHelper.GetInstance().TipoAcondicionamento.Cast<GISADataset.TipoAcondicionamentoRow>().SingleOrDefault(r => r.Designacao.Equals(uf.tipo));
                if (tipoAcondicionamentoRow == null)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_TIPO, uf.tipo, ExceptionHelper.ERR_VALOR_INVALIDO);
                else
                    sfrdufdfRow.TipoAcondicionamentoRow = tipoAcondicionamentoRow;
            }

            sfrdufdfRow.IDTipoMedida = 1;
            sfrdufdfRow.isDeleted = 0;
            sfrdufdfRow.Versao = new byte[] { };
            GisaDataSetHelper.GetInstance().SFRDUFDescricaoFisica.AddSFRDUFDescricaoFisicaRow(sfrdufdfRow);

            return sfrdufdfRow;
        }
 private static GISADataset.SFRDUFCotaRow createSFRDUFCotaRow(UnidadeFisica uf)
 {
     var sfrdufcotaRow = GisaDataSetHelper.GetInstance().SFRDUFCota.NewSFRDUFCotaRow();
     sfrdufcotaRow.Cota = uf.cota;
     sfrdufcotaRow.isDeleted = 0;
     sfrdufcotaRow.Versao = new byte[] { };
     GisaDataSetHelper.GetInstance().SFRDUFCota.AddSFRDUFCotaRow(sfrdufcotaRow);
     return sfrdufcotaRow;
 }
        private static GISADataset.NivelUnidadeFisicaRow createNivelUnidadeFisicaRow(UnidadeFisica uf)
        {
            var nufRow = GisaDataSetHelper.GetInstance().NivelUnidadeFisica.NewNivelUnidadeFisicaRow();
            nufRow.GuiaIncorporacao = uf.guia;

            nufRow.CodigoBarras = "";
            if (uf.codigoBarras.Length > 0)
            {
                if (MathHelper.IsInteger(uf.codigoBarras))
                    nufRow.CodigoBarras = uf.codigoBarras;
                else
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_CODIGOBARRAS, uf.codigoBarras, ExceptionHelper.ERR_VALOR_INVALIDO);
            }
            nufRow.isDeleted = 0;
            nufRow.Versao = new byte[] { };
            GisaDataSetHelper.GetInstance().NivelUnidadeFisica.AddNivelUnidadeFisicaRow(nufRow);
            return nufRow;
        }
        private static void UFsToGISADatasetRows(UnidadeFisica uf)
        {
            var ndEDRow = GisaDataSetHelper.GetInstance().NivelDesignado.Cast<GISADataset.NivelDesignadoRow>().SingleOrDefault(r => r.Designacao.Equals(uf.entidadeDetentora));
            if (ndEDRow == null)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_ENTIDADEDETENTORA, uf.entidadeDetentora, ExceptionHelper.ERR_VALOR_INVALIDO);

            var nRow = createNivelRow();
            nRow.IDTipoNivel = TipoNivel.OUTRO;
            nRow.Codigo = UnidadesFisicasHelper.GenerateNewCodigoString(ndEDRow.NivelRow, System.DateTime.Now.Year);
            createRelacaoHierarquicaRow(nRow, ndEDRow.NivelRow, TipoNivelRelacionado.UF);
            var ndRow = createNivelDesignadoRow(); // titulo
            ndRow.Designacao = uf.titulo;
            ndRow.NivelRow = nRow;
            var nufRow = createNivelUnidadeFisicaRow(uf); // tipo entrega, guia, cod. barras, local consulta
            nufRow.NivelDesignadoRow = ndRow;
            if (uf.tipoEntrega.Length > 0)
            {
                var tipoEntregaRow = GisaDataSetHelper.GetInstance().TipoEntrega.Cast<GISADataset.TipoEntregaRow>().SingleOrDefault(r => r.Designacao.Equals(uf.tipoEntrega));
                if (tipoEntregaRow == null)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_TIPOENTREGA, uf.tipoEntrega, ExceptionHelper.ERR_VALOR_INVALIDO);
                else
                    nufRow.TipoEntregaRow = tipoEntregaRow;
            }
            var frdRow = createFRDBaseRow();
            frdRow.IDTipoFRDBase = 2;
            frdRow.NivelRow = nRow;

            var sfrdufcotaRow = createSFRDUFCotaRow(uf); // cota
            sfrdufcotaRow.FRDBaseRow = frdRow;

            var sfrdufdfRow = createSFRDUFDescricaoFisicaRow(uf); // altura, largura, profundidade, tipo
            sfrdufdfRow.FRDBaseRow = frdRow;

            var sfrdufceRow = createSFRDConteudoEEstruturaRow(); // conteudo informacional
            sfrdufceRow.ConteudoInformacional = uf.conteudoInformacional;
            sfrdufceRow.FRDBaseRow = frdRow;

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

            if (uf.localConsulta.Length > 0)
            {
                var localConsultaRow = GisaDataSetHelper.GetInstance().LocalConsulta.Cast<GISADataset.LocalConsultaRow>().SingleOrDefault(r => r.Designacao.Equals(uf.localConsulta));
                if (localConsultaRow == null)
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_LOCALCONSULTA, uf.localConsulta, ExceptionHelper.ERR_VALOR_INVALIDO);
                else
                    nufRow.LocalConsultaRow = localConsultaRow;
            }

            registos.Add(frdRow, new Registo() { CurrentFRDBase = frdRow, tuOperator = SessionHelper.GetGisaPrincipal().TrusteeUserOperator, tuAuthor = SessionHelper.GetGisaPrincipal().TrusteeUserAuthor ?? default(GISADataset.TrusteeUserRow), data = System.DateTime.Now });

            ufRows[uf.identificador] = nRow;
        }
        private static void ValidaCamposObrigatorios(UnidadeFisica uf)
        {
            if (uf.identificador == null || uf.identificador.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_IDENTIFICADOR, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (uf.titulo == null || uf.titulo.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_TITULO, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);

            if (uf.entidadeDetentora == null || uf.entidadeDetentora.Length == 0)
                ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_ENTIDADEDETENTORA, string.Empty, ExceptionHelper.ERR_VALOR_NAO_DEFINIDO);
        }
        private static GISADataset.SFRDDatasProducaoRow createSFRDDatasProducaoRow(UnidadeFisica uf)
        {
            var sfrddtRow = GisaDataSetHelper.GetInstance().SFRDDatasProducao.NewSFRDDatasProducaoRow();
            if (uf.anoInicio.Length > 0)
            {
                if (!DateHelper.IsValidYear(uf.anoInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_ANOINICIO, uf.anoInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioAno = uf.anoInicio;
            }

            if (uf.mesInicio.Length > 0)
            {
                if (!DateHelper.IsValidMonth(uf.mesInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_MESINICIO, uf.mesInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioMes = uf.mesInicio;
            }

            if (uf.diaInicio.Length > 0)
            {
                if (!DateHelper.IsValidDay(uf.diaInicio))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_DIAINICIO, uf.diaInicio, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.InicioDia = uf.diaInicio;
            }

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

            if (uf.anoFim.Length > 0)
            {
                if (!DateHelper.IsValidYear(uf.anoFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_ANOFIM, uf.anoFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimAno = uf.anoFim;
            }

            if (uf.mesFim.Length > 0)
            {
                if (!DateHelper.IsValidMonth(uf.mesFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_MESFIM, uf.mesFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimMes = uf.mesFim;
            }

            if (uf.diaFim.Length > 0)
            {
                if (!DateHelper.IsValidDay(uf.diaFim))
                    ExceptionHelper.ThrowException(ExceptionHelper.TAB_UNIDADES_FISICAS, uf.identificador, ImportExcel.UF_DIAFIM, uf.diaFim, ExceptionHelper.ERR_VALOR_INVALIDO);
                sfrddtRow.FimDia = uf.diaFim;
            }

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

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