// PUT /tbBandeiraSacado/token/ public HttpResponseMessage Put(string token, [FromBody] TbBandeiraSacadoUpdate param) { // Abre nova conexão using (painel_taxservices_dbContext _db = new painel_taxservices_dbContext()) { tbLogAcessoUsuario log = new tbLogAcessoUsuario(); try { log = Bibliotecas.LogAcaoUsuario.New(token, JsonConvert.SerializeObject(param), "Put", _db); HttpResponseMessage retorno = new HttpResponseMessage(); if (Permissoes.Autenticado(token, _db)) { GatewayTbBandeiraSacado.Update(token, param, _db); log.codResposta = (int)HttpStatusCode.OK; Bibliotecas.LogAcaoUsuario.Save(log, _db); return(Request.CreateResponse(HttpStatusCode.OK)); } else { log.codResposta = (int)HttpStatusCode.Unauthorized; Bibliotecas.LogAcaoUsuario.Save(log, _db); return(Request.CreateResponse(HttpStatusCode.Unauthorized)); } } catch (Exception e) { log.codResposta = (int)HttpStatusCode.InternalServerError; log.msgErro = e.Message; Bibliotecas.LogAcaoUsuario.Save(log);//, _db); throw new HttpResponseException(HttpStatusCode.InternalServerError); } } }
/// <summary> /// Altera tbBandeiraSacado /// </summary> /// <param name="param"></param> /// <returns></returns> public static void Update(string token, TbBandeiraSacadoUpdate param, painel_taxservices_dbContext _dbContext = null) { painel_taxservices_dbContext _db; if (_dbContext == null) { _db = new painel_taxservices_dbContext(); } else { _db = _dbContext; } //DbContextTransaction transaction = _db.Database.BeginTransaction(); try { Int32 cdGrupo = Permissoes.GetIdGrupo(token, _db); if (cdGrupo != 0 && cdGrupo != param.cdGrupo) { throw new Exception("O usuário não está associado ao grupo empresarial cuja relação bandeira-sacado corresponde!"); } param.cdGrupo = cdGrupo; tbBandeiraSacado value = _db.Database.SqlQuery <tbBandeiraSacado>("SELECT *" + " FROM card.tbBandeiraSacado B (NOLOCK)" + " WHERE B.cdGrupo = " + param.cdGrupo + " AND B.cdBandeira = " + param.oldCdBandeira + " AND B.qtParcelas = " + param.oldQtParcelas).FirstOrDefault(); if (value == null) { throw new Exception("Bandeira-Sacado inexistente!"); } List <string> update = new List <string>(); if (param.newCdBandeira != value.cdBandeira) { // Consulta bandeira tbBandeira tbBandeira = _db.tbBandeiras.Where(t => t.cdBandeira == param.newCdBandeira).FirstOrDefault(); if (tbBandeira == null) { throw new Exception("Bandeira inexistente!"); } update.Add("B.cdBandeira = " + param.newCdBandeira); if (tbBandeira.dsTipo.StartsWith("DÉBITO")) { update.Add("B.qtParcelas = 0"); } else if (param.newQtParcelas == 0) { update.Add("B.qtParcelas = 36"); // default } else { update.Add("B.qtParcelas = " + param.newQtParcelas); } } if (param.newCdSacado != null && !param.newCdSacado.Equals(value.cdSacado)) { update.Add("B.cdSacado = '" + param.newCdSacado + "'"); } if (update.Count > 0) { string script = "UPDATE B" + " SET " + string.Join(", ", update) + " FROM card.tbBandeiraSacado B (NOLOCK)" + " WHERE B.cdGrupo = " + param.cdGrupo + " AND B.cdBandeira = " + param.oldCdBandeira + " AND B.qtParcelas = " + param.oldQtParcelas; _db.Database.ExecuteSqlCommand(script); _db.SaveChanges(); //transaction.Commit(); } } catch (Exception e) { //transaction.Rollback(); if (e is DbEntityValidationException) { string erro = MensagemErro.getMensagemErro((DbEntityValidationException)e); throw new Exception(erro.Equals("") ? "Falha ao atualizar bandeira-sacado" : erro); } throw new Exception(e.InnerException == null ? e.Message : e.InnerException.InnerException == null ? e.InnerException.Message : e.InnerException.InnerException.Message); } finally { if (_dbContext == null) { // Fecha conexão _db.Database.Connection.Close(); _db.Dispose(); } } }