//api guardar actividad
        public HttpResponseMessage Post(CreateSubcentroDto model)
        {
            try
            {
                var rpta = CCosto.Save(model);

                return(Request.CreateResponse(HttpStatusCode.OK, rpta));
            }
            catch
            {
                var message = "error al guardar";
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, message));
            }
        }
        //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);
        }