func ListOf(c appengine.Context, IdEmp string) *[]Oferta { q := datastore.NewQuery("Oferta").Filter("IdEmp =", IdEmp).Limit(500) n, _ := q.Count(c) ofertas := make([]Oferta, 0, n) if _, err := q.GetAll(c, &ofertas); err != nil { return nil } sortutil.AscByField(ofertas, "Oferta") return &ofertas }
func listSuc(c appengine.Context, u *model.Cta, IdEmp string) *[]model.Sucursal { q := datastore.NewQuery("Sucursal").Ancestor(datastore.NewKey(c, "Empresa", IdEmp, 0, u.Key(c))) n, _ := q.Count(c) sucursales := make([]model.Sucursal, 0, n) if _, err := q.GetAll(c, &sucursales); err != nil { return nil } sortutil.AscByField(sucursales, "Nombre") return &sucursales }
func listEmp(c appengine.Context, u *model.Cta) *[]model.Empresa { q := datastore.NewQuery("Empresa").Ancestor(u.Key(c)) n, _ := q.Count(c) empresas := make([]model.Empresa, 0, n) if _, err := q.GetAll(c, &empresas); err != nil { return nil } sortutil.AscByField(empresas, "Nombre") return &empresas }
func ShowEmpSucs(w http.ResponseWriter, r *http.Request) { var timetolive = 7200 //seconds c := appengine.NewContext(r) var b []byte cachename := "sucs_" + r.FormValue("id") if item, err := memcache.Get(c, cachename); err == memcache.ErrCacheMiss { emsucs := model.GetEmpSucursales(c, r.FormValue("id")) if emsucs == nil { w.WriteHeader(http.StatusNotFound) return } wssucs := make([]wssucursal, len(*emsucs), cap(*emsucs)) for i, v := range *emsucs { wssucs[i].IdSuc = v.IdSuc wssucs[i].Sucursal = v.Nombre wssucs[i].DirCalle = v.DirCalle wssucs[i].DirCol = v.DirCol wssucs[i].DirEnt = v.DirEnt wssucs[i].Latitud, _ = strconv.ParseFloat(v.Geo1, 64) wssucs[i].Longitud, _ = strconv.ParseFloat(v.Geo2, 64) } sortutil.AscByField(wssucs, "Sucursal") b, _ = json.Marshal(wssucs) item := &memcache.Item{ Key: cachename, Value: b, Expiration: time.Duration(timetolive) * time.Second, } if err := memcache.Add(c, item); err == memcache.ErrNotStored { c.Errorf("memcache.Add %v : %v", cachename, err) if err := memcache.Set(c, item); err == memcache.ErrNotStored { c.Errorf("Memcache.Set %v : %v", cachename, err) } else { c.Infof("memcached %v", cachename) } } else { c.Infof("memcached %v", cachename) } } else { c.Infof("memcache retrieve sucs_idemp : %v", r.FormValue("id")) b = item.Value } w.Header().Set("Content-Type", "application/json") w.Header().Set("Access-Control-Allow-Origin", "*") w.Write(b) }
/* Listado de sucursales por empresa con la oferta marcada */ func ShowEmpSucursalOft(w http.ResponseWriter, r *http.Request) { c := appengine.NewContext(r) emsucs := model.GetEmpSucursales(c, r.FormValue("idemp")) if emsucs != nil { ofsucs, _ := model.GetOfertaSucursales(c, r.FormValue("idoft")) wssucs := make([]WsSucursal, len(*emsucs), cap(*emsucs)) for i, es := range *emsucs { for _, os := range *ofsucs { if os.IdSuc == es.IdSuc { wssucs[i].IdOft = os.IdOft } } wssucs[i].IdSuc = es.IdSuc wssucs[i].IdEmp = es.IdEmp wssucs[i].Sucursal = es.Nombre wssucs[i].FechaHora = es.FechaHora } sortutil.AscByField(wssucs, "Sucursal") w.Header().Set("Content-Type", "application/json") b, _ := json.Marshal(wssucs) w.Write(b) } }
func ShowEmpOfertas(w http.ResponseWriter, r *http.Request) { now := time.Now().Add(time.Duration(model.GMTADJ) * time.Second) var timetolive = 3600 //seconds var batch = 12 // tamaño de pagina c := appengine.NewContext(r) var page int page, _ = strconv.Atoi(r.FormValue("pagina")) page = page - 1 if page < 1 { page = 0 } wsbatch := make([]wsoferta, 0, batch) offset := page * batch var b []byte cachename := "ofxe_" + r.FormValue("id") if item, err := memcache.Get(c, cachename); err == memcache.ErrCacheMiss { emofs := model.ListOf(c, r.FormValue("id")) wsofs := make([]wsoferta, len(*emofs), cap(*emofs)) for i, v := range *emofs { if now.After(v.FechaHoraPub) { if v.Oferta != "Nueva oferta" { wsofs[i].IdEmp = v.IdEmp wsofs[i].IdOft = v.IdOft wsofs[i].Oferta = v.Oferta wsofs[i].Empresa = v.Empresa wsofs[i].Descripcion = v.Descripcion wsofs[i].Enlinea = v.Enlinea wsofs[i].Url = v.Url if v.Promocion != "" { wsofs[i].EmpLogo = v.Promocion } else { wsofs[i].EmpLogo = "http://www.elbuenfin.org/imgs/imageDefault.png" } wsofs[i].SrvUrl = v.Codigo wsofs[i].BlobKey = v.BlobKey } } } sortutil.AscByField(wsofs, "Oferta") jb, _ := json.Marshal(wsofs) item := &memcache.Item{ Key: cachename, Value: jb, Expiration: time.Duration(timetolive) * time.Second, } if err := memcache.Add(c, item); err == memcache.ErrNotStored { c.Errorf("memcache.Add %v : %v", cachename, err) if err := memcache.Set(c, item); err == memcache.ErrNotStored { c.Errorf("Memcache.Set %v : %v", cachename, err) } else { c.Infof("memcached %v", cachename) } } else { c.Infof("memcached %v", cachename) } // se pagina la respuesta if offset <= len(*emofs)-batch { b, _ = json.Marshal(wsofs[offset : offset+batch]) } else { if len(wsofs) > offset { b, _ = json.Marshal(wsofs[offset:]) } else { b, _ = json.Marshal(make([]wsoferta, 0, batch)) } } } else { //c.Infof("memcache retrieve sucs_idemp : %v", r.FormValue("id")) // se pagina la respuesta if err := json.Unmarshal(item.Value, &wsbatch); err != nil { c.Errorf("Unmarshaling wsbatch item: %v", err) } // se pagina la respuesta if offset <= len(wsbatch)-batch { b, _ = json.Marshal(wsbatch[offset : offset+batch]) } else { if len(wsbatch) > offset { b, _ = json.Marshal(wsbatch[offset:]) } else { b, _ = json.Marshal(make([]wsoferta, 0, batch)) } } } w.Header().Set("Content-Type", "application/json") w.Header().Set("Access-Control-Allow-Origin", "*") w.Write(b) }