import (
	// native packages
	"encoding/json"
	"fmt"
	"log"
	"net/http"

	// 3rd packages
	"labix.org/v2/mgo/bson"
)


// Organizations数据模型结构
type Organizations struct {
	Name         string `json:"name"`
	Area         string `json:"area"`
	Type         string `json:"type"`
	CustomerType string `json:"customertype"`
	State        string `json:"state"`
	LastUpdated  string `json:"lastupdated"`
	Assigned     string `json:"assigned"`

	Address `json:"address"`
}

// for GET /Organizations
func (u *Organizations) Index(rw http.ResponseWriter, req *http.Request) {
	var org Organizations
	
	conditions := bson.M{"_id": bson.M{"$exist": 1}}
	
	result, _ := org.Retrieve(conditions)
	fmt.Fprint(rw, result)
}

// Organizations Find
func (o *Organizations) Retrieve(conditions map[string]interface{}) ([]Organizations, error) {
	session, err := getSession()
	if err != nil {
		return nil, err
	}
	defer session.Close()

	collection := session.DB(DATABASE).C("organizations")

	result := []Organizations{}

	err = collection.Find(conditions).All(&result)
	if err != nil {
		log.Println(err.Error())
		return nil, err
	}

	return result, nil
}