Esempio n. 1
0
        public IHttpActionResult SaveRendicion(Models.DTO.Curso curso)
        {
            try
            {
                int usuarioId = int.Parse(DbContextAIVH.GetUserName(User));

                List <Models.CursoGastoDetalle> cursoGastoDetalle = new List <Models.CursoGastoDetalle>();
                int consecutivoId = 1;
                curso.gastos.ForEach(n =>
                {
                    cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                    {
                        CursoId           = curso.cursoId,
                        ConsecutivoId     = consecutivoId,
                        UsuarioId         = n.instructorId,
                        ComprobanteTipoId = n.comprobanteTipoId,
                        Fecha             = DateTime.ParseExact((n.fecha.Replace("-", "/")), "dd/MM/yyyy", CultureInfo.InvariantCulture),
                        SubConceptoId     = n.subConceptoId,
                        Descripcion       = n.descripcion,
                        Proveedor         = n.proveedor,
                        SubTotal          = n.subTotal,
                        Iva   = n.iva,
                        Total = n.total
                    });
                    consecutivoId += 1;
                });
                DateTime?nulo = null;

                var cursoDb = db.Curso.Where(a => a.CursoId == curso.cursoId).FirstOrDefault();
                db.CursoGastoDetalle.RemoveRange(cursoDb.CursoGastoDetalle);

                cursoDb.Efectivo           = curso.efectivo;
                cursoDb.ChequeTans         = curso.chequeTans;
                cursoDb.FechasChequeTans   = curso.fechachequeTans != "" ? DateTime.ParseExact((curso.fechachequeTans.Replace("-", "/")), "dd/MM/yyyy", CultureInfo.InvariantCulture) : nulo;
                cursoDb.NumeroChequeTans   = curso.numeroChequeTans;
                cursoDb.Fecha              = DateTime.Now;
                cursoDb.Hora               = DateTime.Now.TimeOfDay;
                cursoDb.UsuarioIdActualizo = usuarioId;

                if (cursoGastoDetalle.Count > 0)
                {
                    db.CursoGastoDetalle.AddRange(cursoGastoDetalle);
                }



                db.SaveChanges();

                int cursoId = db.Curso.Local.FirstOrDefault().CursoId;

                return(Ok(new
                {
                    message = "El curso se guardó correctamente.",
                    cursoId
                }));
            }
            catch (Exception Ex)
            {
                return(BadRequest("Error al guardar curso"));
            }
        }
Esempio n. 2
0
        public IHttpActionResult SaveCurso(Models.DTO.Curso curso)
        {
            try
            {
                int usuarioId = int.Parse(DbContextAIVH.GetUserName(User));

                //insertar participantes
                List <CursoParticipante> cursoParticipante = new List <CursoParticipante>();
                int consecutivoId = 1;
                curso.participantes.ForEach(n =>
                {
                    if (curso.cursoId == 0)
                    {
                        cursoParticipante.Add(new CursoParticipante
                        {
                            ParticipanteId         = consecutivoId,
                            Nombre                 = n.nombre,
                            Apellido               = n.apellido,
                            Efectivo               = n.efectivo,
                            DepositooTransferencia = n.deposito,
                            Cheque                 = n.cheque,
                            TarjetaCredito         = n.tarjeta,
                            Email   = n.email,
                            Celular = n.celular
                        });
                    }
                    else
                    {
                        cursoParticipante.Add(new CursoParticipante
                        {
                            CursoId                = curso.cursoId,
                            ParticipanteId         = consecutivoId,
                            Nombre                 = n.nombre,
                            Apellido               = n.apellido,
                            Efectivo               = n.efectivo,
                            DepositooTransferencia = n.deposito,
                            Cheque                 = n.cheque,
                            TarjetaCredito         = n.tarjeta,
                            Email   = n.email,
                            Celular = n.celular
                        });
                    }
                    consecutivoId += 1;
                });

                //insertar gastos de comision de instructores
                var pagoParticipantes = curso.participantes.Sum(a => a.efectivo + a.cheque + a.deposito + a.tarjeta);

                List <Models.CursoGastoDetalle> cursoGastoDetalle = new List <Models.CursoGastoDetalle>();

                if (curso.cursoId == 0)
                {
                    cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                    {
                        ConsecutivoId     = 1,
                        UsuarioId         = curso.instructorId1,
                        ComprobanteTipoId = 3,
                        Fecha             = DateTime.Now,
                        SubConceptoId     = 3,
                        Descripcion       = "Comisión por impartición de curso " + curso.comision1 + " %.",
                        Proveedor         = db.Usuario.Where(a => a.UsuarioId == curso.instructorId1).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(),
                        SubTotal          = (curso.comision1 * pagoParticipantes) / 100,
                        Iva   = 0,
                        Total = (curso.comision1 * pagoParticipantes) / 100
                    });

                    if (curso.instructorId2 != 0)
                    {
                        cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                        {
                            ConsecutivoId     = 2,
                            UsuarioId         = curso.instructorId2,
                            ComprobanteTipoId = 3,
                            Fecha             = DateTime.Now,
                            SubConceptoId     = 3,
                            Descripcion       = "Comisión por impartición de curso " + curso.comision2 + " %.",
                            Proveedor         = db.Usuario.Where(a => a.UsuarioId == curso.instructorId2).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(),
                            SubTotal          = (curso.comision2 * pagoParticipantes) / 100,
                            Iva   = 0,
                            Total = (curso.comision2 * pagoParticipantes) / 100
                        });
                    }
                }
                else
                {
                    int consecutivoGastos = 1;

                    cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                    {
                        CursoId           = curso.cursoId,
                        ConsecutivoId     = consecutivoGastos,
                        UsuarioId         = curso.instructorId1,
                        ComprobanteTipoId = 3,
                        Fecha             = DateTime.Now,
                        SubConceptoId     = 3,
                        Descripcion       = "Comisión por impartición de curso " + curso.comision1 + "%.",
                        Proveedor         = db.Usuario.Where(a => a.UsuarioId == curso.instructorId1).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(),
                        SubTotal          = (curso.comision1 * pagoParticipantes) / 100,
                        Iva   = 0,
                        Total = (curso.comision1 * pagoParticipantes) / 100
                    });
                    if (curso.instructorId2 != 0)
                    {
                        consecutivoGastos += 1;
                        cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                        {
                            CursoId           = curso.cursoId,
                            ConsecutivoId     = consecutivoGastos,
                            UsuarioId         = curso.instructorId2,
                            ComprobanteTipoId = 3,
                            Fecha             = DateTime.Now,
                            SubConceptoId     = 3,
                            Descripcion       = "Comisión por impartición de curso " + curso.comision2 + " %.",
                            Proveedor         = db.Usuario.Where(a => a.UsuarioId == curso.instructorId2).Select(b => b.Nombre + " " + b.Paterno + " " + b.Materno).FirstOrDefault(),
                            SubTotal          = (curso.comision2 * pagoParticipantes) / 100,
                            Iva   = 0,
                            Total = (curso.comision2 * pagoParticipantes) / 100
                        });
                    }

                    var gastos = db.CursoGastoDetalle.Where(a => a.CursoId == curso.cursoId && a.SubConceptoId != 3).ToList();

                    gastos.ForEach(n =>
                    {
                        consecutivoGastos += 1;
                        cursoGastoDetalle.Add(new Models.CursoGastoDetalle
                        {
                            CursoId           = n.CursoId,
                            ConsecutivoId     = consecutivoGastos,
                            UsuarioId         = n.UsuarioId,
                            ComprobanteTipoId = n.ComprobanteTipoId,
                            Fecha             = n.Fecha,
                            SubConceptoId     = n.SubConceptoId,
                            Descripcion       = n.Descripcion,
                            Proveedor         = n.Proveedor,
                            SubTotal          = n.SubTotal,
                            Iva   = n.Iva,
                            Total = n.Total
                        });
                    });
                }


                // insertar curso
                if (curso.cursoId == 0)
                {
                    db.Curso.Add(new Models.Curso
                    {
                        CentroCostoId      = curso.centroCostosId,
                        SedeId             = curso.sedeId,
                        LugarCurso         = curso.lugarCurso,
                        CursoTipoId        = curso.cursoTipoId,
                        UsuarioId1         = curso.instructorId1,
                        Comision1          = curso.comision1,
                        UsuarioId2         = curso.instructorId2,
                        Comision2          = curso.instructorId2 > 0 ? curso.comision2 : 0,
                        FechaCurso         = DateTime.ParseExact((curso.fechaCurso.Replace('-', '/')), "dd/MM/yyyy", CultureInfo.InvariantCulture),
                        Efectivo           = 0,
                        ChequeTans         = 0,
                        NumeroChequeTans   = "",
                        Fecha              = DateTime.Now,
                        Hora               = DateTime.Now.TimeOfDay,
                        UsuarioIdActualizo = usuarioId,
                        EstatusId          = 1,
                        CursoParticipante  = cursoParticipante,
                        CursoGastoDetalle  = cursoGastoDetalle
                    });
                }
                else
                {
                    var cursoDb = db.Curso.Where(a => a.CursoId == curso.cursoId).FirstOrDefault();
                    db.CursoParticipante.RemoveRange(cursoDb.CursoParticipante);
                    db.CursoGastoDetalle.RemoveRange(cursoDb.CursoGastoDetalle);

                    cursoDb.CentroCostoId      = curso.centroCostosId;
                    cursoDb.SedeId             = curso.sedeId;
                    cursoDb.LugarCurso         = curso.lugarCurso;
                    cursoDb.CursoTipoId        = curso.cursoTipoId;
                    cursoDb.UsuarioId1         = curso.instructorId1;
                    cursoDb.Comision1          = curso.comision1;
                    cursoDb.UsuarioId2         = curso.instructorId2;
                    cursoDb.Comision2          = curso.instructorId2 > 0 ? curso.comision2 : 0;
                    cursoDb.FechaCurso         = DateTime.ParseExact((curso.fechaCurso.Replace('-', '/')), "dd/MM/yyyy", CultureInfo.InvariantCulture);
                    cursoDb.Fecha              = DateTime.Now;
                    cursoDb.Hora               = DateTime.Now.TimeOfDay;
                    cursoDb.UsuarioIdActualizo = usuarioId;
                    cursoDb.EstatusId          = 1;
                    db.CursoParticipante.AddRange(cursoParticipante);
                    db.CursoGastoDetalle.AddRange(cursoGastoDetalle);
                }

                db.SaveChanges();

                int cursoId = db.Curso.Local.FirstOrDefault().CursoId;

                return(Ok(new
                {
                    message = "El curso se guardó correctamente.",
                    cursoId
                }));
            }
            catch (Exception Ex)
            {
                return(BadRequest("Error al guardar curso"));
            }
        }