public async Task <IHttpActionResult> PutdetalleMov(int id, detalleMov detalleMov)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != detalleMov.id)
            {
                return(BadRequest());
            }

            db.Entry(detalleMov).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!detalleMovExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <IHttpActionResult> GetdetalleMov(int id)
        {
            detalleMov detalleMov = await db.detalleMov.FindAsync(id);

            if (detalleMov == null)
            {
                return(NotFound());
            }

            return(Ok(detalleMov));
        }
        public async Task <IHttpActionResult> PostdetalleMov(detalleMov detalleMov)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.detalleMov.Add(detalleMov);
            await db.SaveChangesAsync();

            return(CreatedAtRoute("DefaultApi", new { id = detalleMov.id }, detalleMov));
        }
        public async Task <IHttpActionResult> DeletedetalleMov(int id)
        {
            detalleMov detalleMov = await db.detalleMov.FindAsync(id);

            if (detalleMov == null)
            {
                return(NotFound());
            }

            db.detalleMov.Remove(detalleMov);
            await db.SaveChangesAsync();

            return(Ok(detalleMov));
        }
        public IHttpActionResult RealizarTransferencia(JObject jObject)
        {
            string nroCuenta1  = jObject.GetValue("nroCuenta1").ToString();
            string nroCuenta2  = jObject.GetValue("nroCuenta2").ToString();;
            int    monto       = Convert.ToInt32(jObject.GetValue("monto").ToString());;
            string descripcion = jObject.GetValue("descripcion").ToString();
            string oficina     = jObject.GetValue("oficina").ToString();
            string ubicacion   = jObject.GetValue("ubicacion").ToString();


            cuenta      cuenta1     = db.cuenta.FirstOrDefault(c => c.nroCuenta == nroCuenta1);
            cuenta      cuenta2     = db.cuenta.FirstOrDefault(c => c.nroCuenta == nroCuenta2);
            transaccion transaccion = new transaccion()
            {
                cuenta = cuenta1, cuenta1 = cuenta2
            };

            if (cuenta1.saldo >= monto)
            {
                cuenta1.saldo           = cuenta1.saldo - monto;
                cuenta2.saldo           = cuenta2.saldo + monto;
                db.Entry(cuenta1).State = EntityState.Modified;
                db.Entry(cuenta2).State = EntityState.Modified;
                transaccion.estado      = "aceptado";

                db.transaccion.Add(transaccion);
                detalleTrans detalleTrans = new detalleTrans()
                {
                    monto = monto, idMoneda = 1, transaccion = transaccion
                };
                db.detalleTrans.Add(detalleTrans);


                movimiento movimiento = new movimiento()
                {
                    cuenta = cuenta1, descripcion = descripcion, fechaHora = DateTime.Now, monto = monto
                };
                db.movimiento.Add(movimiento);
                detalleMov detalleMov = new detalleMov()
                {
                    movimiento = movimiento, saldo = cuenta1.saldo - monto, oficina = oficina, ubicacion = ubicacion
                };
                db.detalleMov.Add(detalleMov);


                movimiento movimiento2 = new movimiento()
                {
                    cuenta = cuenta2, monto = monto, descripcion = descripcion, fechaHora = DateTime.Now
                };
                db.movimiento.Add(movimiento2);
                detalleMov detalleMov2 = new detalleMov()
                {
                    movimiento = movimiento2, saldo = cuenta2.saldo + monto, oficina = oficina, ubicacion = ubicacion
                };
                db.detalleMov.Add(detalleMov2);
            }
            else
            {
                transaccion.estado = "cancelado";
                db.transaccion.Add(transaccion);
                db.SaveChanges();
                return(Content(HttpStatusCode.Conflict, "No hay suficientes fondos en la cuenta 1"));
            }

            try
            {
                db.SaveChanges();
            }
            catch (Exception e)
            {
                return(Conflict());
            }

            return(Ok());
        }