public void VoteRollBack() { if (mode == TransactionMode.Inherits && parentTransactionScope != null) { parentTransactionScope.VoteRollBack(); } _rollbackOnly = true; }
public void ActiveRecordUsingTransactionScopeWithRollback() { InitModel(); using (TransactionScope scope = new TransactionScope()) { new SSAFEntity("example").Save(); //Assert.AreEqual(1, SSAFEntity.FindAll().Length); scope.VoteRollBack(); } Assert.AreEqual(0, SSAFEntity.FindAll().Length); }
public static void Registro() { foreach (var archivo in ActiveRecordBase<ConsumoDto>.FindAllByProperty("Procesado", false)) { var documento = HelperPersona.GetPersona( archivo.Cuit, archivo.TipoCliente, archivo.RazonSocial, archivo.NombrePersona, archivo.NroDocumento, archivo.Empresa); var cliente = HelperCuenta.GetCuenta( archivo.Cuit, archivo.NroDocumento, archivo.Empresa); using (var transac = new TransactionScope()) try { var puntos = HelperPuntos.GetPuntos(archivo.Empresa, archivo.FechaHoraComprobante, archivo.ImportePesosNetoImpuestos); double acelerador = Double.Parse(archivo.Coeficiente) / 100; puntos = acelerador > 0 ? acelerador * puntos : puntos; var cuenta = new CuentaCorrienteDto { FechaCompra = archivo.FechaHoraComprobante.Date, HoraCompra = DateTime.Now, Key = new KeyCuenta { CodEmpresa = archivo.Empresa, NumeroComprobante = archivo.NroComprobante }, MontoCompra = archivo.ImportePesosNetoImpuestos, Movimiento = puntos >= 0 ? HelperMovimiento.FindMovimiento("Suma De Puntos") : HelperMovimiento.FindMovimiento("Anulación Carga"), NumeroDocumento = documento, NumeroCuenta = cliente, Puntos = puntos, Sucursal = HelperSucursal.GetSucursal(), Usuario = "web", Programa = archivo.Programa, Secretaria = archivo.Secretaria, Coeficiente = archivo.Coeficiente }; cuenta.Save(); transac.VoteCommit(); } catch (Exception ex) { archivo.Error = ex.Message; Log.Fatal(ex); transac.VoteRollBack(); } archivo.Procesado = true; archivo.Save(); } }
public ActionResult Edit(int id, FormCollection form) { using (var transaction = new TransactionScope(TransactionMode.Inherits)) { var original = Document.Find(id); if (TryUpdateModel(original)) { original.Save(); return RedirectToAction("Details", new { Id = id }); } transaction.VoteRollBack(); return View("Edit"); } }
/// <summary> /// evento disparado pelo botão salvar /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSalvar_Click1(object sender, EventArgs e) { //bisca a lista de moradores selecionados List<int> lista = (List<int>)ViewState["moradores"]; if (lista.Count > 0) { //abre a transação using (TransactionScope trans = new TransactionScope()) { try { //cria o template da mensagem Domain.Model.Mensagem mensagem = new Domain.Model.Mensagem(); mensagem.Usuario = txtUsuario.Text; mensagem.Detalhe = txtMensagem.Text; mensagem.CreateAndFlush(); Usuario user = new Usuario(); MensagensDosUsuarios mensagemRelacionada; //envia a mensagem para casa usuário selecionado foreach (var item in lista) { user.Id = item; mensagemRelacionada = new MensagensDosUsuarios(); mensagemRelacionada.Mensagem = mensagem; mensagemRelacionada.Usuario = user; mensagemRelacionada.CreateAndFlush(); } //commit da transação trans.VoteCommit(); } catch (Exception ex) { //rollback da transação trans.VoteRollBack(); //grava o erro em um log Logger.Error(ex.Message); base.ExibirMensagemErro(); } } base.ExibirMensagemSucesso(Funcionalidade.Mensagem, Operacao.Inclusao); } else { pnlMensagem.ExibirMensagem("Selecione os usuários para quem você vai enviar a mensagem"); } }
public ActionResult Create(Document document) { using(var transaction = new TransactionScope(TransactionMode.New)) { try { var user = _user.UserName(); var author = Models.User.FindByUsername(user); author.Documents.Add(document); author.Save(); return RedirectToAction("Index"); } catch (NotFoundException ex) { transaction.VoteRollBack(); ViewBag.ErrorMessage = String.Format("{0}. Please add the user first.", ex.Message); } } return View("Create"); }
/// <summary> /// funcionalidade de edição de um registro de funcionario /// </summary> /// <param name="id"></param> private void EditarFuncionario(int id) { //abre a transação using (TransactionScope trans = new TransactionScope()) { try { //consulta o funcionário pelo ID Funcionario funcionario = Funcionario.FindByPrimaryKey(id); //atribui os dados que estão na página funcionario.Nome = Request.Form["ctl00$ContentPlaceHolder1$txtNome"]; //txtNome.Text.Trim(); funcionario.Endereco = Request.Form["ctl00$ContentPlaceHolder1$txtEndereco"]; //txtEndereco.Text.Trim(); funcionario.CPF = Request.Form["ctl00$ContentPlaceHolder1$txtCpf"]; //txtCpf.Text.Trim(); funcionario.RG = Request.Form["ctl00$ContentPlaceHolder1$txtRG"]; //txtRG.Text.Trim(); funcionario.Telefone = Request.Form["ctl00$ContentPlaceHolder1$txtTelefone"]; //txtTelefone.Text.Trim(); funcionario.DataNascimento = DateTime.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtDataNascimento"]); funcionario.DataAdmissao = DateTime.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtDataContratacao"]); funcionario.NumeroCarteiraTrabalho = Request.Form["ctl00$ContentPlaceHolder1$txtCarteiratrabalho"];// txtCarteiratrabalho.Text.Trim(); funcionario.Cargo = Request.Form["ctl00$ContentPlaceHolder1$txtCargo"];// txtCargo.Text.Trim(); //atualiza o funcionário funcionario.UpdateAndFlush(); if (Request.Form["ctl00$ContentPlaceHolder1$txtSalario"].Trim() != string.Empty) { //verifica se tem salário e se houve alteração do valor decimal valor = decimal.Parse(Request.Form["ctl00$ContentPlaceHolder1$txtSalario"]); if (funcionario.SalarioVigente != null) { if (funcionario.SalarioVigente.Valor != valor) { //atribui o valor da salário funcionario.SalarioVigente.FinalVigencia = DateTime.Today; funcionario.SalarioVigente.Vigente = false; //atualiza o registro funcionario.SalarioVigente.UpdateAndFlush(); if (valor != 0) { Salario salario = new Salario(); salario.InicioVigencia = DateTime.Today; salario.Vigente = true; salario.Valor = valor; salario.FuncionarioDoSalario = funcionario; salario.CreateAndFlush(); } } } } else { if (funcionario.SalarioVigente != null) { funcionario.SalarioVigente.FinalVigencia = DateTime.Today; funcionario.SalarioVigente.Vigente = false; funcionario.SalarioVigente.UpdateAndFlush(); } } //commit da transação trans.VoteCommit(); } catch (Exception ex) { //rollback da transação trans.VoteRollBack(); throw ex; } finally { trans.Flush(); } } }
/// <summary> /// grava um novo registro de funcionário /// </summary> private void CadastrarNovoFuncionario() { //abre a transação using (TransactionScope trans = new TransactionScope()) { try { //atribui os dados da página para o registro de funcionário e salva no banco Funcionario funcionario = new Funcionario(); funcionario.Nome = txtNome.Text.Trim(); funcionario.Endereco = txtEndereco.Text.Trim(); funcionario.CPF = txtCpf.Text.Trim(); funcionario.RG = txtRG.Text.Trim(); funcionario.Telefone = txtTelefone.Text.Trim(); funcionario.DataNascimento = DateTime.Parse(txtDataNascimento.Text.Trim()); funcionario.DataAdmissao = DateTime.Parse(txtDataContratacao.Text.Trim()); funcionario.NumeroCarteiraTrabalho = txtCarteiratrabalho.Text.Trim(); funcionario.Cargo = txtCargo.Text.Trim(); funcionario.CreateAndFlush(); if (txtSalario.Text.Trim() != string.Empty) { decimal valor = decimal.Parse(txtSalario.Text.Trim()); if (valor != 0) { //cria o registro do salário Salario salario = new Salario(); salario.InicioVigencia = DateTime.Parse(txtDataContratacao.Text.Trim()); salario.Vigente = true; salario.Valor = valor; salario.FuncionarioDoSalario = funcionario; salario.CreateAndFlush(); } } //commit da transação trans.VoteCommit(); } catch (Exception ex) { //rollback da transação trans.VoteRollBack(); //sobe o erro para o método que o chamou, onde será gravado em um arquivo de texto throw ex; } finally { //fecha a transasção trans.Flush(); } } }
private void MakeRendicion(int idSolOrg) { TransactionScope _transaction = new TransactionScope(); Solicitud sol = Solicitud.GetById(idSolOrg); DateTime fechanula = DateTime.Parse("01/01/1900"); Solicitud reporte ; try { reporte = Solicitud.FindOne(Expression.Eq("IdSolicitudInicial", idSolOrg)); if (reporte == null) { reporte = new Solicitud(); reporte.IdSolicitudInicial = sol.Id_Solicitud; reporte.IdCliente = sol.IdCliente; reporte.IdTipoSolicitud = sol.IdTipoSolicitud; reporte.IdUsuarioCreador = BiFactory.User.IdUsuario; reporte.Reporte = "SI"; reporte.Status = eEstados.Pendiente.ToString(); reporte.NroOrdenCte = sol.NroOrdenCte; reporte.Contacto = sol.Contacto; reporte.ContactoMail = sol.ContactoMail; reporte.ContactoTel = sol.ContactoTel; reporte.Descripcion = sol.Descripcion; reporte.FechaCreacion = DateTime.Now; reporte.FechaAprobacionCalidad = fechanula; reporte.FechaAprobacionTecnica = fechanula; reporte.FechaReprogramacion = fechanula; reporte.FechaSuspencion = fechanula; reporte.ProximaFechaInicio = fechanula; reporte.ProximaFechaFin = fechanula; reporte.Save(); TipoSolicitud tipo = sol.Tipo; if (tipo.IdTiposolicitud == 1) ///Mantenimiento Preventivo { SolicitudPreventivo Sol_Prev = SolicitudPreventivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg)); Sol_Prev.Id = 0; Sol_Prev.IdSolicitud = reporte.Id_Solicitud; Sol_Prev.SaveCopyAndFlush(); //copio las tareas SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudTareas t in tt) { t.Id = 0; //para que guarde una copia t.IdSolicitud = reporte.Id_Solicitud; t.SaveCopyAndFlush(); } } if (tipo.IdTiposolicitud == 2) ///Mantenimiento Correctivo { SolicitudCorrectivo Sol_Corr_original= SolicitudCorrectivo.FindOne(Expression.Eq("IdSolicitud", idSolOrg)); Sol_Corr_original.Id = 0; Sol_Corr_original.IdSolicitud = reporte.Id_Solicitud; Sol_Corr_original.FechaResolucion = DateTime.Parse("1900-01-01"); Sol_Corr_original.SaveCopyAndFlush(); } if (tipo.IdTiposolicitud == 6) ///Obras e Instalaciones { SolicitudObra Sol_Obra = SolicitudObra.FindOne(Expression.Eq("IdSolicitud",idSolOrg)); Sol_Obra.Id = 0; Sol_Obra.IdSolicitud = reporte.Id_Solicitud; Sol_Obra.SaveCopy(); } //copio las PErsonas SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosEmpleados e in ee) { e.Id = 0; e.IdSolicitud = reporte.Id_Solicitud; e.SaveCopy(); } //copio los vehiculos SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosVehiculos v in vv) { v.Id = 0; v.IdSolicitud = reporte.Id_Solicitud; v.Horas = 0; v.Km = 0; v.SaveCopy(); } } reporte.Save(); //BiFactory.Sol = reporte; } catch (Exception) { _transaction.VoteRollBack(); throw; } finally { _transaction.Dispose(); switch (sol.IdTipoSolicitud) { case 1: Response.Redirect("MantPreventivoRendicion.aspx"); break; case 2: Response.Redirect("MantCorrectivoRendicion.aspx"); break; case 6: Response.Redirect("Reporte_Obras.aspx"); break; } } }
private void CrearClone(int idSolOrg) { TransactionScope _transaction = new TransactionScope(); try { //guarda la solicitud con la relacion Solicitud_Relacion SolRel = new Solicitud_Relacion(); Solicitud sol; // antes de crear una copia verifico que no exista ya una SolRel = Solicitud_Relacion.FindOne(Expression.Eq("IdSolicitud_Relacionada", idSolOrg)); if (SolRel == null) { SolRel = new Solicitud_Relacion(); sol = Solicitud.GetById(idSolOrg); sol.Status = "Rendicion"; sol.Id_Solicitud = 0; sol.SaveCopy(); BiFactory.Sol = sol; } else { sol = Solicitud.GetById(SolRel.IdSolicitud); BiFactory.Sol = sol; } SolRel.IdSolicitud = sol.Id_Solicitud; SolRel.IdSolicitud_Relacionada = idSolOrg; SolRel.Save(); //copio las tareas SolicitudTareas[] tt = SolicitudTareas.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudTareas t in tt) { t.Id = 0; //para que guarde una copia t.IdSolicitud = sol.Id_Solicitud; t.SaveCopy(); } //copio los agentes SolicitudRecursosEmpleados[] ee = SolicitudRecursosEmpleados.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosEmpleados e in ee) { e.Id = 0; e.IdSolicitud = sol.Id_Solicitud; e.SaveCopy(); } //copio los vehiculos SolicitudRecursosVehiculos[] vv = SolicitudRecursosVehiculos.FindAll(Expression.Eq("IdSolicitud", idSolOrg)); foreach (SolicitudRecursosVehiculos v in vv) { v.Id = 0; v.IdSolicitud = sol.Id_Solicitud; v.SaveCopy(); } } catch (Exception oEx) { _transaction.VoteRollBack(); throw; } finally { _transaction.Dispose(); Response.Redirect("./MantPreventivoRendicion.aspx"); } }
public void ToRender([ARDataBind("purchase",AutoLoadBehavior.Always)] Purchase purchase, string comment) { PurchaseStatusChange psc = new PurchaseStatusChange(); psc.Created = DateTime.Now; psc.Purchase = purchase; psc.StatusOld = purchase.Status; psc.StatusNew =Purchase.StatusPurchase.Entregado; psc.author = Context.CurrentUser.Identity.Name.ToLower (); purchase.DateDelivery = System.DateTime.Now; purchase.Status = Purchase.StatusPurchase.Entregado; using (TransactionScope t1 = new TransactionScope()) { try { purchase.Save (); psc.Save (); if (!string.IsNullOrEmpty(comment)) { PurchaseComment pc = new PurchaseComment(); pc.Comment = comment; pc.Created = DateTime.Now; pc.Purchase = purchase; pc.UserComment = Context.CurrentUser.Identity.Name.ToLower (); pc.Save (); } t1.VoteCommit(); Flash["TypeMsg"] = "alert alert-success"; Flash["Msg"] = "<b>Ok, Solicitud " + purchase.Status +" entregada conforme...</b> "; } catch (Exception ex) { t1.VoteRollBack(); if (!purchase.IsValid()) { Flash["Msg"] = Utilities.GetValidationErrorText(purchase.ValidationErrorMessages); } else { Flash["Msg"] = "Error :" + ex.Message + " " + comment.Length.ToString(); } RedirectToReferrer (); return; } } PropertyBag["to"] = ConfigurationManager.AppSettings["mailadmin"]; PropertyBag["cc"] = purchase.UserRequest + "@" + ConfigurationManager.AppSettings["defaultdomain"]; PropertyBag["from"] = ConfigurationManager.AppSettings["mailadmin"]; PropertyBag["subject"] = "[compras] Compra recepcionada "+ purchase.Status +" ID:" + purchase.Id.ToString (); PropertyBag["purchase"] = purchase; PropertyBag["purchaseproducts"] = purchase.PurchaseProducts; DeliverEmail(RenderMailMessage ("close",null,PropertyBag)); RenderView ("approval"); }
public void ToApprove([ARDataBind("purchase",AutoLoadBehavior.Always)] Purchase purchase, string response, string comment) { PurchaseStatusChange psc = new PurchaseStatusChange(); psc.Created = DateTime.Now; psc.Purchase = purchase; psc.StatusOld = purchase.Status; switch (response) { case "approval" : { purchase.Status = Purchase.StatusPurchase.Aprobada; break; } case "reject" : { purchase.Status = Purchase.StatusPurchase.Rechazada; break; } default : { Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Error :" + response; RedirectToReferrer (); return; } } psc.StatusNew = purchase.Status; psc.author = Context.CurrentUser.Identity.Name.ToLower (); purchase.DateApproval = System.DateTime.Now; using (TransactionScope t1 = new TransactionScope()) { try { purchase.Save (); psc.Save (); if (!string.IsNullOrEmpty(comment)) { PurchaseComment pc = new PurchaseComment(); pc.Comment = comment; pc.Created = DateTime.Now; pc.Purchase = purchase; pc.UserComment = Context.CurrentUser.Identity.Name.ToLower (); pc.Save (); } t1.VoteCommit(); Flash["TypeMsg"] = "alert alert-success"; Flash["Msg"] = "<b>Ok, Solicitud " + purchase.Status +" enviada a Compras</b> "; } catch (Exception ex) { t1.VoteRollBack(); Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Error :" + ex.Message; RedirectToReferrer (); return; } } PropertyBag["to"] = ConfigurationManager.AppSettings["mailadmin"]; PropertyBag["cc"] = purchase.UserRequest + "@" + ConfigurationManager.AppSettings["defaultdomain"]; PropertyBag["from"] = ConfigurationManager.AppSettings["mailadmin"]; PropertyBag["subject"] = "[compras] Compra "+ purchase.Status +" ID:" + purchase.Id.ToString (); PropertyBag["purchase"] = purchase; PropertyBag["purchaseproducts"] = purchase.PurchaseProducts; DeliverEmail(RenderMailMessage ("toapprove",null,PropertyBag)); if (purchase.Status == Purchase.StatusPurchase.Aprobada) RenderView ("approval"); else RenderView ("reject"); }
public void submit([ARDataBind("purchaseproducts")] PurchaseProduct[] purchaseproducts, int companyid, int userapproval, int familyproductid, string comment, HttpPostedFile uploadedFile) { Purchase purchase = new Purchase(); purchase.UserRequest = Context.CurrentUser.Identity.Name.ToLower (); purchase.DateRequest = System.DateTime.Now; User user = (User) Context.Session["user"]; purchase.MailRequest = user.Mail; purchase.NameUserRequest = user.Cn; if (companyid > 0) purchase.Company = Company.FindById(companyid); else { Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Seleccionar Compañia"; RedirectToAction("new"); return; } CompanyApprover ca = new CompanyApprover(); if (userapproval > 0) { ca = CompanyApprover.FindById(userapproval); purchase.UserApproval = ca; } else { Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Seleccionar Aprobador"; RedirectToAction("new"); return; } if (familyproductid < 1) { Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Seleccionar Familia de Productos"; RedirectToAction("new"); return; } purchase.Status = Purchase.StatusPurchase.En_Aprobacion; using (TransactionScope t1 = new TransactionScope()) { try { //purchase.BudgetValue = Budget.FindByCompanyFamilyProduct(Company.FindById(companyid), FamilyProduct.FindById(familyproductid)).Value; purchase.familyproduct = FamilyProduct.FindById(familyproductid); purchase.Save (); int cont = 0; foreach(PurchaseProduct pp in purchaseproducts) { if (pp.Checked) { pp.Purchase = purchase; //pp.Product = Product.FindById(1); if (!pp.IsValid()) { Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = Utilities.GetValidationErrorText(pp.ValidationErrorMessages); t1.VoteRollBack (); RedirectToAction("new"); return; } pp.Save(); cont++; } } if (cont == 0) { t1.VoteRollBack (); Flash["TypeMsg"] = "alert alert-error"; Flash["Msg"] = "Seleccionar Productos"; RedirectToAction("new"); return; } if (!string.IsNullOrEmpty(comment)) { PurchaseComment pc = new PurchaseComment(); pc.Comment = comment; pc.Created = DateTime.Now; pc.Purchase = purchase; pc.UserComment = Context.CurrentUser.Identity.Name.ToLower (); pc.Save (); } if (uploadedFile != null) { PurchaseAttachment pa = new PurchaseAttachment(); pa.Purchase = purchase; pa.Name = uploadedFile.FileName; pa.Created = DateTime.Now; pa.Path = Guid.NewGuid().ToString("N") + uploadedFile.FileName; pa.Save (); uploadedFile.SaveAs("../upload_compras/"+pa.Path); } t1.VoteCommit (); Flash["TypeMsg"] = "alert alert-success"; Flash["Msg"] = "Solicitud generada con ID :<b>" + purchase.Id.ToString() + "</b>"; } catch (Exception ex) { t1.VoteRollBack (); Flash["TypeMsg"] = "alert alert-error"; if (!purchase.IsValid()) { Flash["Msg"] = Utilities.GetValidationErrorText(purchase.ValidationErrorMessages); } else { Flash["Msg"] = "Error :" + ex.Message; } RedirectToAction("new"); return; } } PropertyBag["to"] = ca.Login + "@" + ca.Domain; PropertyBag["from"] = ConfigurationManager.AppSettings["mailadmin"]; PropertyBag["subject"] = "[compras] Solicitud Aprobacion ID:" + purchase.Id.ToString (); PropertyBag["idpurchase"] = purchase.Id; PropertyBag["username"] = purchase.NameUserRequest; PropertyBag["datepurchase"] = purchase.DateRequest.ToString (); DeliverEmail(RenderMailMessage ("approver",null,PropertyBag)); }