Beispiel #1
0
        public override void RespondToRequest(User user,
			System.Web.HttpRequest request, 
			System.Web.HttpResponse response, 
			IBabyDataSource DataSource)
        {
            Baby b=null;
            if (!String.IsNullOrEmpty (request ["id"])) {
                b = DataSource.ReadBaby (request ["id"], user);
            }

            switch (request.HttpMethod.ToUpper()) {

            case "GET":

                if(b!=null){
                    if (b.HasPermission (user.Username, Permission.Types.READ)) {
            //						b.Permissions = DataSource.GetPermissionsForBaby (b, user);
            //						b.Events = DataSource.GetEventsForBaby (b, user);
                        response.Write (b.ToJSON ());
                    } else {
                        throw new AuthException ("You don't have permission to view this baby's data");
                    }
                } else {
                    throw new ArgumentNullException ("Argument 'id' not specified. POST to CREATE a BABY or use and id.");
                }

                break;

            case "POST":

                b = new Baby();
                b.Name = request["name"];
                b.Sex = request["sex"];
                b.IsPublic = request["public"] =="Y";
                DateTime.TryParse(request["dob"], out b.DOB);
                b.Image = request["image"];

                if(String.IsNullOrEmpty(request["id"])){
                    Baby fromDb = DataSource.CreateBaby(b,user);

                    response.Write (fromDb.ToJSON ());
                }
                else{
                    if (b.HasPermission (user.Username, Permission.Types.PARENT)) {
                        b.Id = request ["id"];
                        DataSource.SaveBaby (b, user);
                    } else {
                        throw new AuthException ("Only users with the parent role can update baby details.");
                    }
                }

                break;
            default:
                throw new NotSupportedException ("Unsupported HTTP Method");
                break;

            }
        }