예제 #1
0
func UpdateEmpNm(w http.ResponseWriter, r *http.Request) {
	c := appengine.NewContext(r)
	const batch = 300
	page, _ := strconv.Atoi(r.FormValue("pg"))
	if page < 1 {
		page = 1
	}
	offset := batch * (page - 1)
	q := datastore.NewQuery("Empresa").Offset(offset).Limit(batch)
	n, _ := q.Count(c)
	for i := q.Run(c); ; {
		var e model.Empresa
		key, err := i.Next(&e)
		if err == datastore.Done {
			break
		}
		var ua model.Cta
		if err := datastore.Get(c, key.Parent(), &ua); err != nil {
			c.Errorf("Get Cta Key; Error al intentar leer key.Parent() de Empresa : %v", e.IdEmp)
		} else {
			if _, err := ua.PutEmpresa(c, &e); err != nil {
				c.Errorf("PutEmpresa(); Error al intentar actualizar empresa : %v", e.IdEmp)
			}
		}
	}
	c.Infof("UpdateEmpNm() Pagina: %d, actualizados: %d, del %d al %d", page, n, offset, offset+n)
	return
}
예제 #2
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
}
예제 #3
0
func ctaFill(r *http.Request, cta *model.Cta) {
	cta.Nombre = strings.TrimSpace(r.FormValue("Nombre"))
	cta.Apellidos = strings.TrimSpace(r.FormValue("Apellidos"))
	cta.Puesto = strings.TrimSpace(r.FormValue("Puesto"))
	cta.Email = strings.TrimSpace(r.FormValue("Email"))
	cta.EmailAlt = strings.TrimSpace(r.FormValue("EmailAlt"))
	if r.FormValue("Pass") != "" {
		cta.Pass = strings.TrimSpace(r.FormValue("Pass"))
	}
	cta.Tel = strings.TrimSpace(r.FormValue("Tel"))
	cta.Cel = strings.TrimSpace(r.FormValue("Cel"))
}
예제 #4
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
}
예제 #5
0
func ConfirmaCodigo(w http.ResponseWriter, r *http.Request) {
	c := appengine.NewContext(r)
	md5 := r.FormValue("m")
	key, _ := datastore.DecodeKey(r.FormValue("c"))
	var g model.Cta
	if err := datastore.Get(c, key, &g); err != nil {
		if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil {
			http.Error(w, err.Error(), http.StatusInternalServerError)
		}
		return
	}

	/* Se verifica el código de confirmación */
	if g.CodigoCfm == md5 && g.Status == false {
		// Si se confirma el md5 la cuenta admin se le asigna un folio y se activa el status
		if err := sharded_counter.Increment(c, "cuenta_admin"); err == nil {
			if folio, err := sharded_counter.Count(c, "cuenta_admin"); err == nil {
				g.Folio = folio
				g.Status = true
				g.CodigoCfm = "Confirmado"
				_, err := datastore.Put(c, key, &g)
				if err != nil {
					http.Error(w, err.Error(), http.StatusInternalServerError)
					return
				}
				/* Prende la sesion */
				_, _, err = sess.SetSess(w, c, key, g.Email, g.Nombre)
				if err != nil {
					http.Error(w, err.Error(), http.StatusInternalServerError)
					return
				}

				if MailServer == "gmail" {
					// Envia código activación
					var hbody bytes.Buffer
					var sender string
					if appengine.AppID(c) == "ebfmxorg" {
						sender = "El Buen Fin <*****@*****.**>"
					} else {
						sender = "El Buen Fin <*****@*****.**>"
					}
					if err := mailAvisoActivacionTpl.Execute(&hbody, g); err != nil {
						http.Error(w, err.Error(), http.StatusInternalServerError)
					}
					msg := &mail.Message{
						Sender:   sender,
						To:       []string{g.Email},
						Subject:  "Cuenta Activada / El Buen Fin en línea",
						HTMLBody: hbody.String(),
					}
					if err := mail.Send(c, msg); err != nil {
						// Problemas para enviar el correo NOK
						http.Error(w, err.Error(), http.StatusInternalServerError)
						http.Redirect(w, r, "/", http.StatusFound)
					}
					// avisa del éxito independientemente del correo
					if err := activationMessageTpl.ExecuteTemplate(w, "confirm", g); err != nil {
						http.Error(w, err.Error(), http.StatusInternalServerError)
					}
					return
				} else {
					client := urlfetch.Client(c)
					url := fmt.Sprintf("http://envia-m.mekate.com.mx/?Sender=%s&Tipo=Aviso&Email=%s&Nombre=%s&Pass=%s&AppId=ebfmxorg",
						"*****@*****.**",
						g.Email,
						url.QueryEscape(g.Nombre),
						url.QueryEscape(g.Pass))
					r1, err := client.Get(url)
					if err != nil {
						http.Error(w, err.Error(), http.StatusInternalServerError)
						return
					}

					if r1.StatusCode != 200 {
						http.Error(w, "Error de Transporte de Mail", http.StatusInternalServerError)
					}
					if err := activationMessageTpl.ExecuteTemplate(w, "confirm", g); err != nil {
						http.Error(w, err.Error(), http.StatusInternalServerError)
					}
					defer r1.Body.Close()
				}
			} else {
				// El Folio no es seguro, se deshecha la operación o se encola
				if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil {
					http.Error(w, err.Error(), http.StatusInternalServerError)
				}
				return
			}
		} else {
			// El Folio no es seguro, se deshecha la operación o se encola
			if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil {
				http.Error(w, err.Error(), http.StatusInternalServerError)
			}
			return
		}
	} else {
		if err := activationMessageTpl.ExecuteTemplate(w, "codeerr", nil); err != nil {
			http.Error(w, err.Error(), http.StatusInternalServerError)
		}
	}
}
예제 #6
0
func registroCsv(w http.ResponseWriter, r *http.Request) {
	c := appengine.NewContext(r)
	if u := user.Current(c); u == nil {
		return
	}

	var lote = 200
	pagina, _ := strconv.Atoi(r.FormValue("pg"))

	w.Header().Set("Content-Type", "text/csv")
	w.Header().Set("Content-type", "application/octet-stream")
	w.Header().Set("Content-Disposition", "attachment; filename=\"reportecta.csv\"")
	w.Header().Set("Accept-Charset", "utf-8")

	//fmt.Fprintf(w, "'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'\n",
	//"cta.Nombre", "cta.Apellidos", "cta.Puesto", "cta.Email", "cta.EmailAlt", "cta.Pass", "cta.Tel", "cta.Cel", "cta.FechaHora", "cta.CodigoCfm", "cta.Status",
	//"IdEmp", "RFC", "Nombre Empresa", "Razon Social", "Dir.Calle", "Dir.Colonia", "Dir.Entidad", "Dir.Municipio", "Dir.Cp", "Dir.Número Suc",
	//"Organiso Emp", "Otro Organismo", "Reg Org. Empresarial", "Url", "PartLinea", "ExpComer", "Descripción", "FechaHora Alta Emp.","emp.Status")
	fmt.Fprintf(w, "'%s'|'%s'|'%s'|'%t'|'%s'|'%s'|'%s'|'%s'|'%s'|'%t'\n",
		"cta.Email", "cta.EmailAlt", "cta.Pass", "cta.Status", "IdEmp", "RFC", "Nombre Empresa", "Razon Social", "FechaHora Alta Emp", "emp.Status")

	q := datastore.NewQuery("Cta").Offset(pagina * lote).Limit(lote)
	for cursor := q.Run(c); ; {
		var cta model.Cta
		_, err := cursor.Next(&cta)
		if err == datastore.Done {
			break
		}

		q2 := datastore.NewQuery("Empresa").Ancestor(cta.Key(c))
		for cursor := q2.Run(c); ; {
			var emp model.Empresa
			_, err := cursor.Next(&emp)
			if err == datastore.Done {
				break
			}
			/*
				var entidad string
				var municipio string
				munq := datastore.NewQuery("Municipio").Filter("CveEnt =", emp.DirEnt).Filter("CveMun =", emp.DirMun).Limit(1)
				for muncur := munq.Run(c); ; {
					var mun model.Municipio
					_, err := muncur.Next(&mun)
					if err == datastore.Done  {
						break
					}
					municipio = mun.Municipio
					entidad = mun.Entidad
				}
				desc := strings.Replace(emp.Desc, "\n", " ", -1)
				desc = strings.Replace(desc, "\r", " ", -1)
			*/

			fmt.Fprintf(w, "'%s'|'%s'|'%s'|'%t'|'%s'|'%s'|'%s'|'%s'|'%s'|'%t'\n",
				cta.Email, cta.EmailAlt, cta.Pass, cta.Status, emp.IdEmp, emp.RFC, emp.Nombre, emp.RazonSoc, emp.FechaHora, emp.Status)

			//fmt.Fprintf(w, "'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%s'|'%d'|'%d'|'%s'|'%s'|'%t'\n",
			//cta.Nombre, cta.Apellidos, cta.Puesto, cta.Email, cta.EmailAlt, cta.Pass, cta.Tel, cta.Cel, cta.FechaHora, cta.CodigoCfm, cta.Status,
			//emp.IdEmp, emp.RFC, emp.Nombre, emp.RazonSoc, emp.DirCalle, emp.DirCol, entidad, municipio, emp.DirCp, emp.NumSuc,
			//emp.OrgEmp, emp.OrgEmpOtro, emp.OrgEmpReg, emp.Url, emp.PartLinea, emp.ExpComer, desc, emp.FechaHora, emp.Status)
			/*
				cta.Nombre, cta.Apellidos, cta.Puesto, cta.Email, cta.EmailAlt, cta.Pass, cta.Tel, cta.Cel, cta.FechaHora, cta.CodigoCfm, cta.Status,
				emp.IdEmp, emp.RFC, emp.Nombre, emp.RazonSoc, emp.DirCalle, emp.DirCol, entidad, municipio, emp.DirCp, emp.NumSuc,
				emp.OrgEmp, emp.OrgEmpOtro, emp.OrgEmpReg, emp.Url, emp.PartLinea, emp.ExpComer, emp.FechaHora, emp.Status)
			*/
		}

	}
}