//obtener por id
        public SPSubCentroCosto GetById(int id)
        {
            var subcentro = new SPSubCentroCosto();

            try
            {
                using (var ctx = new PresupuestoContext())
                {
                    subcentro = ctx.SPSubCentroCosto.Where(x => x.Id == id).SingleOrDefault();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return(subcentro);
        }
        //metodo para guardar lote y detalle lote
        public string Save(CreateSubcentroDto model)
        {
            var rpta = "";

            try
            {
                using (var ctx = new PresupuestoContext())
                {
                    using (DbContextTransaction transaction = ctx.Database.BeginTransaction())
                    {
                        try
                        {
                            var subCentroCosto = new SPSubCentroCosto
                            {
                                Id         = model.Id,
                                fincaId    = model.fincaId,
                                nombre     = model.nombre,
                                codigo_nav = model.codigo_nav,
                                codigo     = model.codigo,
                                estado     = "A"
                            };

                            if (subCentroCosto.Id > 0)
                            {
                                ctx.Entry(subCentroCosto).State = EntityState.Modified;
                            }
                            else
                            {
                                ctx.SPSubCentroCosto.Add(subCentroCosto);
                            }
                            ctx.SaveChanges();

                            int fincaId = subCentroCosto.Id;

                            //eliminamos los existentes para sustituirlos
                            var detalles = ctx.SPCCostoActividad.Where(x => x.fincaId == fincaId).ToList();
                            ctx.SPCCostoActividad.RemoveRange(detalles);
                            ctx.SaveChanges();

                            if (model.actividades != null)
                            {
                                foreach (var d in model.actividades)
                                {
                                    var detalle = new SPCCostoActividad
                                    {
                                        fincaId     = fincaId,
                                        actividadId = d
                                    };

                                    ctx.SPCCostoActividad.Add(detalle);
                                    ctx.SaveChanges();
                                }
                            }
                            transaction.Commit();
                            rpta = "sub centro de costo registado correctamente";
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            throw ex;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return(rpta);
        }