예제 #1
0
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
}
예제 #2
0
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
}
예제 #3
0
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
}
예제 #4
0
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)
}
예제 #5
0
/*
	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)
	}
}
예제 #6
0
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)
}