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 }
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 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")) }
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 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) } } }
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) */ } } }