示例#1
0
        public ReservationsModule(IRepository repository)
            : base("/reservations")
        {
            this.RequiresAuthentication();

            Get["/"] = _ =>
            {
                var user = Context.GetAlephUserIdentity();

                var reservations = repository.GetUserInformation(user.UserName, user.Password).Reservations;
                if (reservations == null)
                {
                    return new ReservationDto[0];
                }
                return reservations.Select(r => DtoMaps.Map(r, repository)).ToArray();
            };

            Delete["/{documentId}"] = args =>
            {
                var user = Context.GetAlephUserIdentity();

                var userReservations = repository.GetUserInformation(user.UserName, user.Password).Reservations;
                var resToRemove = userReservations.FirstOrDefault(r => r.DocumentNumber == args.documentId);

                if (resToRemove != null)
                {
                    var response = repository.CancelReservation(resToRemove.ItemDocumentNumber, resToRemove.ItemSeq, resToRemove.CancellationSequence);
                    if (response.Success) Context.RequireUserInfoRefresh();

                    return response;
                }

                return "Kunne ikke finne dokument i liste over reservasjoner";
            };

            Put["/{documentId}"] = args =>
            {
                string branch = Request.Form.branch.HasValue ? Request.Form.branch : Request.Query.branch;

                var response = repository.RequestReservation(args.documentId, Context.GetUserInfo().Id, branch);
                if (response.Success) Context.RequireUserInfoRefresh();

                return response;
            };
        }