示例#1
0
            public static bool Excluir(T1 registro)
            {
                bool ret = true;

                if (ret)
                {
                    ret = ValidarExclusao(registro);
                }

                if (ret)
                {
                    try
                    {
                        DBControl.BeginTrans();

                        if (registro is HasAutoRemove)
                        {
                            List <ReferenceExpression> listAR = ((HasAutoRemove)registro).GetAutoRemoveCollection();

                            foreach (ReferenceExpression ar in listAR)
                            {
                                Type clazz = ar.Clazz;

                                Type  customListType = typeof(List <>).MakeGenericType(clazz);
                                IList list           = (IList)Activator.CreateInstance(customListType);

                                if (ar.Id != 0)
                                {
                                    list = Pesquisar(ar.Id);
                                }
                                else
                                {
                                    list = InvokePesquisar(clazz, ar.Expression);
                                }

                                if (list != null && list.Count > 0)
                                {
                                    foreach (var item in list)
                                    {
                                        Type clazzMI = typeof(DBControl.Table <>).MakeGenericType(clazz);

                                        var parameterTypes = new object[] { typeof(int) };

                                        MethodInfo mi = clazzMI.GetMethods().FirstOrDefault(m => m.Name == "Excluir" && m.GetParameters().Select(p => p.ParameterType).SequenceEqual(parameterTypes));

                                        object[] parameters = new object[] { ((IdentityColumn)item).Id };

                                        ret = (bool)mi.Invoke(null, parameters);

                                        if (!ret)
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                        }

                        if (ret)
                        {
                            var lista = BaseDados.DataBase.GetCollection <T1>(CollectionName());

                            ret = lista.Delete(((IdentityColumn)registro).Id);
                        }

                        if (ret)
                        {
                            DBControl.Commit();
                        }
                        else
                        {
                            DBControl.Rollback();
                        }
                    }
                    catch (Exception ex)
                    {
                        ret = false;
                        DBControl.Rollback();

                        Mensagem.ShowErro("Erro ao excluir registro de " + ClassName() + "!", ex);
                    }
                }

                return(ret);
            }
        private bool GravarAvaliacao()
        {
            bool ret = false;

            DBControl.BeginTrans();

            try
            {
                avaliacao = new Avaliacao();

                string codigo = GetCodigoAvaliacao();

                string strSeq = "";

                List <Avaliacao> avaliacoes = DBControl.Table <Avaliacao> .Pesquisar(x => x.Codigo.StartsWith(codigo));

                if (avaliacoes != null && avaliacoes.Count > 0)
                {
                    strSeq = avaliacoes[avaliacoes.Count - 1].Codigo.Substring(codigo.Length);
                }

                int seq = 1;

                if (!strSeq.Equals(""))
                {
                    seq = int.Parse(strSeq);
                    seq++;
                }

                codigo = codigo + seq.ToString("000");

                StringBuilder sb = new StringBuilder();

                sb.Append("Avaliação ");
                sb.Append(tipoAvaliacao);
                sb.Append(" ");
                sb.Append(disciplina.Nome);
                sb.Append(" sequência ");
                sb.Append(seq.ToString("000"));

                avaliacao.Codigo       = codigo;
                avaliacao.Descricao    = sb.ToString();
                avaliacao.DtGeracao    = dtGeracao;
                avaliacao.IdDisciplina = parametersGA.IdDisciplina;
                avaliacao.QtdQuestoes  = parametersGA.QtdQuestoes;

                int idAvaliacao = DBControl.Table <Avaliacao> .Incluir(avaliacao);

                ret = idAvaliacao > 0;

                if (ret)
                {
                    AvaliacaoQuestao aq;
                    int id;

                    foreach (int idQuestao in questoes)
                    {
                        aq = new AvaliacaoQuestao();

                        aq.IdAvaliacao = idAvaliacao;
                        aq.DtGeracao   = dtGeracao;
                        aq.IdQuestao   = idQuestao;

                        id = DBControl.Table <AvaliacaoQuestao> .Incluir(aq);

                        ret = id > 0;

                        if (!ret)
                        {
                            break;
                        }
                    }
                }

                if (ret)
                {
                    DBControl.Commit();
                }
                else
                {
                    DBControl.Rollback();
                }
            }
            catch (Exception ex)
            {
                Mensagem.ShowErro("Erro na inclusão da Avaliação!", ex);
                DBControl.Rollback();
            }

            return(ret);
        }