text:
Posted on March 23, 2018 by pastor
What Are You Looking For? (Midweek Lent 5)
You have to deal with it. One of the challenges in our lives is that it is far, far easier to put off till tomorrow what we could be doing today. But, at some point you have to deal with the situation. It could be your Spring cleaning. It could be your taxes. I hope it's not your Christmas decorations. It would be past time to deal with those. And these are all small examples. But the larger, more important example of this that Mark brings to our eyes is what we do with or deal with when it comes to Jesus. In Mark 15, we read: "1 As soon as it was morning, having held a meeting with the elders, scribes, and the whole Sanhedrin, the chief priests tied Jesus up, led him away, and handed him over to Pilate. 2 So Pilate asked him, "Are you the King of the Jews?" He answered him, "You say so." 3 And the chief priests accused him of many things. 4 Pilate questioned him again, "Aren't you going to answer? Look how many things they are accusing you of!" 5 But Jesus still did not answer, and so Pilate was amazed." (Mark 15:1–5 CSB17)
As you have grown accustomed to, there is a familiar A….B…A structure in Mark's gospel. Here the pattern is spacial. People deal with who Jesus is inside, then they deal with Jesus outside, then finally, inside again. And so, the first person to deal with who Jesus is is Pilate. So remember where we were last Wednesday. The Jewish leaders had a secret, illegal trial in the middle of the night. Then, just when the sun comes up, they assemble the entire Sanhedrin and make their illegal verdict official. Then, very quickly, they dish Jesus off to Pilate. And Pilate is just simply not equipped to handle the situation in front of him. He is used to the Jewish leaders being against each other in just about every issue. But here, in front of him, they were united in one issue. They wanted Jesus dead. What we need to picture this evening is the prætorium. The Pætorium is this big courtyard. So you picture steps and a dais on one side with Pilate's living quarters behind that. In the middle is Jesus. And around him are hundreds of soldiers. Just outside that are the Jews accusing Jesus. But Mark gets to the conclusion of the conversation. Pilate says, "You are the King of the Jews, aren't you?'"1 It's a question that expects a "yes" answer. In a very interesting way Jesus responds to him. He says, "That's what you say.'"2 It reminds me of when I got into stupid arguments with other children when I was growing up. When someone made fun of me, the 'go-to' response was "Sez you!" Here Jesus means these words truly and sincerely. Pilate had a warped notion of what a king was and should be. But Pilate wasn't there to learn from Jesus. Pilate was there to use Jesus. To Pilate Jesus was a convenient King. Pilate's plan was to use Jesus to hopefully free Jesus. But if that didn't work, at least he could use Jesus to survive at least one more day. But that's not the sort of king Pilate had in front of him. Kings make commands. Instead, Pilate wanted to make commands to Jesus.
And isn't the same true today. The King of kings says today, "I have mercy on some and send them to heaven" and "I will be fair and just ot others and send them to hell." And in response, the sin-filled world around us says: "I will not follow a king who allows such evil people into heaven and I will not follow a king who sends people to hell who do so little that's really wrong.'" Instead of hearing and obeying commands to the King of Kings, they give commands to him or ignore his commands.
And isn't the same true of us? We can despise Pilate or laugh at the world around us for making Jesus into a convenient King. But we do the same. Our King makes commands. He tells us to worship him with our whole heart, but our focus and attention drifts in and out the entire time we are here this evening. Our king commands us to grow in God's word by reading our bibles at home and studying them here, but it's ever-so-tempting to ignore those commands from our King. He commands us to come to him regularly in prayer. But it's ever-so-tempting to redefine that command into "when I get around to it." Pilate called Jesus the King of the Jews. But he made him into a convenient king. And all of us do the same today. But then, Mark shifts our away from the inside to the outside: "6 At the festival Pilate used to release for the people a prisoner whom they requested. 7 There was one named Barabbas, who was in prison with rebels who had committed murder during the rebellion. 8 The crowd came up and began to ask Pilate to do for them as was his custom. 9 Pilate answered them, "Do you want me to release the King of the Jews for you?" 10 For he knew it was because of envy that the chief priests had handed him over. 11 But the chief priests stirred up the crowd so that he would release Barabbas to them instead. 12 Pilate asked them again, "Then what do you want me to do with the one you call the King of the Jews?" 13 Again they shouted, "Crucify him!" 14 Pilate said to them, "Why? What has he done wrong?" But they shouted all the more, "Crucify him!" 15 Wanting to satisfy the crowd, Pilate released Barabbas to them; and after having Jesus flogged, he handed him over to be crucified." (Mark 15:6–15 CSB17)
Here, as the focus shifts to the crowd on the outside we see a fascinating irony: The harder Pilate tries, the worse the situation gets. Pilate pleads for this king's innocence. Then, when that doesn't work, he tries to compromise and just have the king beaten. But that just makes the situation worse and they then go for everything they can: they shout, "Crucify him."
But, as ironic as the situation is, it is also perfectly completely appropriate. For Jesus was the only one there who took that title that Pilate spoke seriously. The King of the Jews must finally take responsibility for the Jews. Who would pay for the piled up generations of rebellions and lies the Jews told? To whom much is given, much is expected. And so, it was appropriate and even perfect that their shout would be Jesus' will. For the King of the Jews had to take responsibility for the Jews. And even more amazing still, Jesus takes responsibility not only for the rebellions of the Jews, but also for us Gentiles. Pilate looked for a convenient King. And we too have followed in his footsteps. The crowd looked for a crucified king. And, in such a perfect and appropriate way, what they wanted, they got. For this king takes responsibility for their rebellions and ours. But these words end back inside the prætorium again: "16 The soldiers led him away into the palace (that is, the governor's residence) and called the whole company together. 17 They dressed him in a purple robe, twisted together a crown of thorns, and put it on him. 18 And they began to salute him, "Hail, King of the Jews!" 19 They were hitting him on the head with a stick and spitting on him. Getting down on their knees, they were paying him homage. 20 After they had mocked him, they stripped him of the purple robe and put his clothes on him." (Mark 15:16–20 CSB17)
Pilate looks for a convenient king. The crowd cries out for a crucified king. The soldiers make Jesus into a clown king. They beat him up. They spit on him. They make fun of him. All of my life I've had a strange understanding of clowns. For I've never known exactly why they exist. When I was a child there were a bunch of clowns who came to our school. And there was this one clown who gave a kid a bat and then made fun of the kid until the kid beat the clown with the bat. Then, when the kid hit the clown the first time, the crowd around looked at the clown in shock. What would the clown do? Would he encourage the violence or stop it? The clown did everything he could to get the kid to beat him more. Why? Maybe he was trying to provide the children with an outlet: beat on me instead of beating on each other. Maybe he just simply thought it was funny and knew others would think it was funny too. But it taught a very real lesson: it was ok to beat on this guy—and it was even fun. That's what the soldiers learned about Jesus. No one would get in their way. And the abuse they poured out on Jesus was fun.
We too have the same temptation. But our temptation is not to beat Jesus with rods. Instead, it's with our words. We can cry out and use the name of our King in the wrong way when we are angry because we think it will make us feel better. We can cry out and use the name of our King as a punchline to a joke. And we can conclude that's "ok" because it makes us feel better. No it isn't. When we use the name of our King in a sinful way either through anger or laughter, it is wrong. We are making Jesus into a clown king.
But here is were we return back outside again in our own hearts. For Jesus wasn't just the king of the Jews, he was also the King for the Jews. He paid for that sin along with all the others when he was crucified. For Jesus is the atoning sacrifice for the sins of the entire world. Amen.
1 "ⲥⲩⲉⲓⲟⲃⲁⲥⲓⲗⲉⲩⲥⲧⲱⲛⲓ̈ⲟⲩⲇⲁⲓⲱⲛ·" (Mark 15:2 GNT-ALEX)
2 "ⲥⲩⲗⲉⲅⲉⲓⲥ·" (Mark 15:2 GNT-ALEX)
CategoriesSpecial Services
Previous PostPrevious Who Do You Think You Are? (Lent 5)
Next PostNext Adult Instruction Class (11b)


text:
Home - Opinions
Opinions Sun, 17 Sep 2017
Questionable blanket free education: Capitalists mocking themselves into utopian Socialism?
Last week, we heard the current President of Kwame Nkrumah's Ghana blurt out; "All hail free education"!
According to the President and his followers, education is now freeeeeeeeeee!!!!
Phew!!!
Is education really free in Ghana?
Nana Akufo-Addo and his people must be thinking that we have so soon forgotten the exact promises they made on the campaign trail when they were making all kinds of ugly noises and promising to give Ghanaians "FREE EDUCATION UP TO SENIOR HIGH SCHOOL".
I have been combing through the 2016 Manifesto of the NPP and precisely in CHAPTER 9, which deals with the policy on EDUCATION, the NPP stated categorically that they will provide "FREE EDUCATION UP TO SENIOR HIGH".
On page 104 of the Manifesto, inter alia, "The NPP believes that all the hopes of Ghanaians for a bright future will come to naught unless the country is able to resolve its education crisis. That is why the NPP declares Education to be a MAJOR PRIORITY and commits itself to a BOLD, CREATIVE and VISIONARY and ALL-EMBRACING PROGRAM for the TRANSFORMATION OF EDUCATION IN GHANA.
The core elements of the Program shall be a free education for Ghanaian children UP TO SENIOR HIGH SCHOOL (caps mine) to ease the burden on parents and guardians while encouraging them to assume their responsibility for the social upbringing and parental control of their children".
In simple and plain language, the NPP promised to give us free education from kindergarten UP TO SENIOR HIGH SCHOOL.
Indeed, when the President recently appeared at a Speech and Prize Giving Day ceremony at the Okuapamen Senior High School, he reiterated the point that education was going to be FREE from kindergarten UP TO SENIOR HIGH SCHOOL.
In no time; and knowing that it CANNOT give free education from kindergarten up to senior high school, the NPP used its media machinery to hide the manifesto pledge of FREE EDUCATION UP TO SENIOR HIGH SCHOOL, and kept drowning our eardrums with FREE SHS; FREE SHS; FREE SHS.
Realizing that even the FREE SHS is not financially feasible, the NPP now decided to drown our eardrums with FREE SHS FOR FIRST YEAR STUDENTS.
So, I ask; where is the FREE EDUCATION UP TO SENIOR HIGH SCHOOL, that the NPP loudly trumpeted on every rooftop and on every mountain top?
Does the NPP think that its media propaganda that FREE EDUCATION has started, is what will make education free in Ghana?
Even with the first year students; is their education really free?
Are parents still not buying; trunks, chop box, sandals, uniforms, cutlass, hoes, brooms, toiletries, mattress, blankets, bedsheets, church cloths, etc? Wherein lies the free education?
So just because government is absorbing tuition and feeding fees, that is enough to be trumpeting free education to the high heavens and claiming victory where there is no victory?
Besides, is this the first time that a government has absorbed feeding and tuition fees? Certainly not!!!
It is crystal clear that the NPP; which is a RIGHT WING party, has run into a cul-de-sac with its capitalist ideas and so is engaging in populist rhetoric to score very fleeting and cheap political points.
The NPP is trying too hard to be more SOCIALIST than the SOCIALIST NDC, and the result is that the NPP is making a mockery of itself by engaging in Utopian Socialism.
Even hard-core Marxist Socialist do not believe in Utopian Socialism so it is no wonder that the NPP is running itself into a world of MOCKERY by its dreamy attempt to create an IDEAL WORLD OF FREE EDUCATION.
When capitalists try to outrun socialists via socialist-oriented policies, it becomes akin to the case of "the invited guest crying more than the bereaved".
Political parties all over the world, are driven by Ideologies and are inspired by a cluster of principles and philosophies.
The NPP has NEVER believed in any form of SOCIAL DEMOCRACY so it is amazing how they are in a hurry to implement Socialist oriented policies.
The NPP is very much aware that when it comes to the area of EDUCATION; the NDC has an unparalleled and impeccable record.
From President Rawlings, through President Atta Mills, to President Mahama, the NDC's outstanding record in the education sector CANNOT AND CAN NEVER be matched by the NPP.
It is this knowledge that the NPP CANNOT match the Education Sector record of the NDC, that is forcing the NPP to engage in this kamikaze FREE EDUCATION which has no HEAD nor TAIL.
I have had personal engagements with lots of School Heads who are deeply concerned about the rush to implement a policy that has no HEAD nor TAIL.
What is all this NONSENSE about Parent Teacher Associations (PTAs), not being allowed to pay dues? Ahba!!!
Are PTAs not voluntary associations? Since when did it become a crime for Voluntary Associations to pay dues?
The NPP has found itself in a deep mess because as part of its campaign of noise-making and empty propaganda, they promised to absorb all PTA dues as part of their FREE EDUCATION pledge.
Columnist: Koku Anyidoho

redpajama_set_name: RedPajamaCommonCrawl


Luxury upgrade for all apartments! We are pleased to announce we recently upgraded both the Riverview apartments and the Shore Inn apartments. The upgrades included new carpets, furniture, appliances and painting throughout and have brought all the units up to complete luxury by any standards. The great rates remain the same but the experience is even better. But don't take our word for it here is just one review from a long list you can find on our website on the 'testimonials' page.


I love living on Long Island. We're in wonderful a wonderful suburb with great school, wooded lots and I happen to live on a quiet dead end. All that, and I'm only 30 miles from midtown Manhattan.
If you've heard me talk about my wonderful Island on the MWAPodcast, you've heard gripes about how this wonderful Island doesn't have a good hardwood dealer. Thankfully, that situation has changed. Long Island is now the perfect place to live.
Recently, I was talking with Greg Ferdinand on twitter and he mentioned that he'd hear Riverhead Building Supply was stocking rough sawn lumber at their Calverton location. Last week he and I met there and boy do they.
It was like this, only real.
Greg and I toured the warehouse to find more than 30 species of rough sawn in stock. This seems to be mostly for Riverhead's own custom millwork and hardwood flooring use, but they sell their stock to the public. We spend about 30 minutes just walking up and down the aisles, simply amazed at what they had in stock. I saw a piece of 8/4 Sapele that must have been 24" wide by 12' long.
I'm not sure if these seems impressive to most of you. For Long Island, it is fantastic.
Between Riverhead Building's Calverton rough sawn lumber warehouse and the new Urban Hardwoods in Huntington Station it looks like I'll have plenty of wood for future builds.
Note: I'm an idiot and didn't think to take an photos.


text:
[Bio] Ryoichi Ayugai
Revival Dawn - One Piece RP :: Creation :: Character Creation :: Character Bio :: Approved
Ryoichi Ayugai
[tracker=/t1576-ryoichi-ayugai#8716]
Name : Ryoichi Ayugai
Epithet : The Boxing Bear
Crew : The Guardian Knights
Ship : The Grand Steamer
Marine Rank : Petty Officer
Devil Fruit : Kuma-Kuma no Mi (Bear-Bear Fruit) Model: Polar Bear
Income Bonus : +0.20 (to all allies); +0.13 (from turf)
[[baneoftheweak]][[childofdestiny]][[punchoutguru]][[berryprinter]]
Basic Character Information
Starting Bonus: Pocket Change | [Starting Bonus Roll]
First Name: Ryoichi
Middle Name/Initial: N/A
Last Name: Ayugai
Epithet: The Bear
Faction: Marine
Profession: Hand to Hand combat
Height: 6 feet 1 inch (1.85m)
Weight: 198 lbs (95kg)
Hair Style: Long hair, put up into pompadour style with hair gel
Eye Color: Brownish
Scars: On chest and left shoulder
Clothing and Accessories: When on duty, he wears normal Marine issued clothes: Sleeveless white shirt with blue stripes on the colar part of the shirt, blue sailors scarf, dark blue pants and black tank boots. When off duty, he likes to wear normal long or short sleeved shirts, very light boots or even slippers and wear shorts
Description: Starting from the top, without pompadour, he has long black hair reaching down to his chin height. His face is what many call "strong" with fairly strong chin. He has thick eyebrows which give him a fairly mean face expression. Besides having the "strong" face, the rest of his body is fairly strong aswell, having very refined physique which includes bulging biceps, bulging pecs, a hardened 6-pack stomach and very strong legs.
Main Traits: Loyal, strong willed, brave
Likes: All sorts of meats, Strong alcohol, women, all sorts of fights
Dislikes: Vegetables, sweets,
Unique laugh: Nothing unique here, just the normal "Hahahahahahahaha!"
Hometown: North Blue, Notice
Personality: Standing strong and he is very proud of himself and his accomplishments, those could be the best words to describe Ryoichi on the first glance. Getting to know him better, it can be seen that he is very hearty, kind to friends and civilians. He has been seen to a bit of a jokster and sometimes be a bit vulgar, but his vulgarity happens only outside of duty. For him, being on duty is a privilege and he takes it fairly seriously. He dislikes corruption that he is perfectly aware, happens sometimes in the World Government and Marines. He isn't afraid to state what he thinks when something stinks in the duty and is ready to say it even in the higher ups face. He hopes to make his now retired father proud of him and be a good, maybe even better Marine than he was.
Ryoichi is the only child and he was born in Notice, an island in North Blue. His father was a Marine officer situated there while his mother was a staying home, taking care of raising up Ryoichi aswell as cooking dinner to her husband and child. Besides being a Marine, Ryoichi's father was also a former semi-professional boxer. Ryoichi clearly had inherited his fathers genes in that aspect, having showed natural born ability to box very well already when he was just 5 years old, of course doing that on a boxing bag.
It would have been a waste of such genes and talent, so Ryoichi's father decided to dedicate a lot of his free time to train Ryoichi from that very young age. His training was tough, during training times, Ryoichi wasn't the son to his father, but instead, a student. His father's task was to train him in the arts of boxing and in later age train him to even endure the "Nuclear" winter, strengthening his mind and body. Little did Ryoichi know, his father was training him for one more reason. His father always dreamed of his son becoming a Marine like him, but he had no plan to forcefully push that dream onto him, leaving young Ryoichi his free will.
When Ryoichi was 10 years old, his father took him to "Child to work day" of the Marines. That was all Ryoichi needed to have his future aim: become a Marine like his father. Ryoichi started to take his training more and more seriously. Besides being trained in boxing and his physical body, he was also now being taught about the Marines. This all training began to create a bit of bad blood between Ryoichi's mother and father, which caused them to argue often. Ryoichi's mother was concerned about Ryoichi's well being, being afraid that his childhood is being taken away with all the training and studying. It was already bad enough Ryoichi was lacking in friends department.
Through the thick blood, Ryoichi kept his training, but it was a bit less strict as it used to be. It was at that time Ryoichi even started to make some more friends. When Ryoichi was 14, his father was badly injured while on duty and ended up being paralized from waist down. This was a big shot to Ryoichi, especially mentally. His will to become a Marine was shot into pieces. For months, he didn't wish to talk about it, and even for months, his training was left as it was.
Every day, Ryoichi hoped his father recovered from it all. But the future and reality can be cruel. Ryoichi's father would never walk again. Not having trained in the arts of boxing and not having learned about the life of Marine is one thing, but Ryoichi was nearly ready to drop everything and find a new goal in his life. It was his father though, who reignited the flame once more. He may have been paralyzed, but that never stopped him from training Ryoichi, but also, spend time with him in other aspects, and also, spend time with his wife.
When Ryoichi was 17, he finally had a chance to display his skills as a boxer. He participated in his first Boxing tournament. The tournament consisted of a lot of amatures but also, a lot of bright future stars in the said sport. Through a lot of sweat and blood, years of hard work on his technique, mind, body and soul, brought Ryoichi his first boxing title. Although it was just the Amature local boxing title, it was still a big thing to him, his parents and his friends.
(Ryoichi wearing his Amature Boxing Champion belt)
From there on out, Ryoichi focused the most on the boxing instead of future Marine life. Ryoichi went from being an Amature boxer to a Profesional boxer on Notice island, which took him only a year. His future looked bright in the said sport. So far, he had been unbeatable, but his win streak was broken by another up and coming star. A freakish boxer with blonde hair and tanned skin, a disgusting and scary personality aswell with unbeatable streak. Ryoichi's pride was shattered by this boxer, especially due to the fact that, the fight lasted only two rounds. Although his mind and body was trained, it was never trained to take a loss, especially like this one.
(Ryoichi's final Profesional Match)
His father was there to save Ryoichi again. He smacked a book in Ryoichi's head. Another wake up call to Ryoichi. His life wasn't over. He had a choice to go back to boxing which he easily could have, or he had a choice to choose a new path, a now forgotten path, the path to become a Marine. Ryoichi left the house to go and think of his choices.
His walk was long, all the way out from the city even. He had a lot of thinking to do. It was past noon when he noticed how far he had walked from the city. It was time to go back to the city, when he suddenly heard a screaming of young woman and also, a young child. Ryoichi immediately ran to the location from where he had heard the scream, BUT it wasn't just screaming. Mixed in between the screams, there was also a loud roar. Ryoichi witnessed a large black bear terrorising the small calm household.
Ryoichi had the sense of justice to protect the household, he immediately rushed there and shouted at the bear. That alone was enough to gain the bears attention. The bear stood up, staring down at Ryoichi and roared. Ryoichi tore his tank top off and stared up at the bear, his eyes lacked the fear. The bear was first to swing its sharp claws at Ryoichi. Ryoichi bobed and weaved away from the incoming attacks, following up with a counter, straight in between the eyes of the bear.
(Ryoichi versus The Black Bear)
Ryoichi was sure to land strong enough punch, but that wasn't enough to even stop the bear in its place. The fight continued, while as Ryoichi's attacks most landed, he had to avoid the most of attacks from the bear. It was a fight which Ryoichi had never experienced. When in boxing, your round lasts 3 minutes then you get a minute of pause, Ryoichi had to fight minutes and minutes in row.
That was enough of time for the household to call the Marines with Den Den Mushi. BUT, by the time the Marines arrived, Ryoichi had done the miracle. He had defeated an opponent tougher than his last boxing opponent. The black bear had FALLEN! The blood was dripping from Ryoichi's chest and also left shoulder, having claw marks there.
(Ryoichi victorious over the black bear)
Even after the fierce fight, the bear wasn't actually killed. It pushed Ryoichi off and sprinted back into the forest. Ryoichi was down on the ground, injured, falling unconcious. When he opened his eyes, he finds himself in the city's hospital. By his bed are his parents and also the family who he had just saved. "Akuma, the devil" said the little girl with shaking tone. Her mother immediately had to correct her, "A kuma, the bear". The little girl called Ryoichi "The Bear", being as strong to even face a bear in one on one fight. The name stuck with him, and he embraced it.
This event helped him to clear his mind, helped him to decide on his final path. He had decided to join the Marine training when he turns 19. His choice was made, but there was still something he had to do before retiring fully from profesional boxing career. He had a wish to have one more boxing match, against the guy he had lost. He spent time training after having recovered from the wounds. During that time, he had even been given a very interesting fruit from his father, a fruit that will solidify his epithet forever.
Ryoichi's final match took place just a month before his drafting. The small hall was full of people. The awaited rematch can start again. This time, the fight was different. Instead of lasting only two rounds, the fight lasted all the way until the very end. This time they fought as equals, it was clear that even his opponent could have fought against the bear, but would he have had the guts to do so, we'll never know.
(Ryoichi, ready to face his oponent in the last round)
The fight ended with a surprise to everyone. There were hopes it would happen, but noone was sure it would. Ryoichi, had WON! He was able to fulfill his small dream of defeating the very guy he lost against. He was able to join the Marines with calm mindset. He was proud of himself, and so were proud of him his friends, and his family. He is forever grateful to everything and everyone, and is now able to proceed and work towards his future goal: Becoming a great Marine and use his talent for the good. It is now truly the time to live up to his epiteth, "THE BEAR"
Re: [Bio] Ryoichi Ayugai
Ryoichi Ayugai wrote:
Updated birthdate.


a) Retaliate against those who support death row prisoners, often from the other side of the world. Overseas visitors travel at their own expense and use their yearly vacation to do so and long distance families and friends also travel at a dear cost to visit with their loved ones, this visiting time is precious for all concerned.
b) Further punish those on death row who are already being punished beyond their death sentence by being placed in administrative segragation (while they are not serving a term of penal servitude but are sentenced to die) to cut them further from the outside world. To these men and women, overseas support is the only support available and their only mean to sustain some kind of sanity to counterbalance the outrageous deprivations they are already enduring while waiting for their death.
We urge you to rescind this decision as it is unjustified, counterproductive, cruel and totally unnecessary to maintain order and discipline on death row.
Please sign and forward around you.
This petition needs to be signed with your FULL name and ONCE only.Incomplete names and double signatures will be removed completely.
For those overseas, please consider sending a personal letter to your ambassador or consul in Houston (or in Washington if your country doesn't have direct representation in Texas) using the petition text in order to ask them to voice your concern to TDCJ-ID Director, Nathaniel Quaterman in Austin. Contat me directly if you need the detailed info for TDCJ addresses, fax and phone numbers.
This petition will run until Sept 20th, 2006, so please don't wait to sign it and circulate it among your friends.


We are hosting a private One Day Retreat for Bethany Christian Services of Knoxville on Friday, June 23 from 9:00am to 4:00pm at the Rivershack Farm in Knoxville, Tennessee. We will focus our time on the importance and necessity of caring for our own souls with room for solitude and a space for silent prayer. This retreat will be an opportunity to enjoy, reflect, and to rest in the presence of God. Our founding director, Russell Courtney, will be co-facilitating our time together.
We're simply in existence to walk alongside folks to help create a healthy inner life and healthy rhythms in a culture that screams "work harder", "do more", "go faster", "hurry up." In short, we exist as an organization to help hectic hearts flourish.
Where are we meeting? The retreat is being hosted at Rivershack Farm, 8 minutes from downtown Knoxville.
What does the day entail? Lunch is included along with all materials and facilitation.


text:
package org.hoteia.qalingo.core.service;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
import org.hoteia.qalingo.core.domain.Cart;
import org.hoteia.qalingo.core.domain.Customer;
import org.hoteia.qalingo.core.domain.CustomerAddress;
import org.hoteia.qalingo.core.domain.CustomerCredential;
import org.hoteia.qalingo.core.domain.CustomerGroup;
import org.hoteia.qalingo.core.domain.CustomerMarketArea;
import org.hoteia.qalingo.core.domain.CustomerOptin;
import org.hoteia.qalingo.core.domain.CustomerPaymentInformation;
import org.hoteia.qalingo.core.domain.Email;
import org.hoteia.qalingo.core.domain.EngineEcoSession;
import org.hoteia.qalingo.core.domain.Market;
import org.hoteia.qalingo.core.domain.MarketArea;
import org.hoteia.qalingo.core.domain.OrderCustomer;
import org.hoteia.qalingo.core.domain.Retailer;
import org.hoteia.qalingo.core.domain.enumtype.CustomerPlatformOrigin;
import org.hoteia.qalingo.core.domain.enumtype.FoUrls;
import org.hoteia.qalingo.core.email.bean.ContactEmailBean;
import org.hoteia.qalingo.core.email.bean.CustomerForgottenPasswordEmailBean;
import org.hoteia.qalingo.core.email.bean.CustomerNewAccountConfirmationEmailBean;
import org.hoteia.qalingo.core.email.bean.CustomerResetPasswordConfirmationEmailBean;
import org.hoteia.qalingo.core.email.bean.NewsletterEmailBean;
import org.hoteia.qalingo.core.email.bean.OrderConfirmationEmailBean;
import org.hoteia.qalingo.core.email.bean.RetailerContactEmailBean;
import org.hoteia.qalingo.core.exception.UniqueNewsletterSubscriptionException;
import org.hoteia.qalingo.core.fetchplan.FetchPlan;
import org.hoteia.qalingo.core.fetchplan.SpecificFetchMode;
import org.hoteia.qalingo.core.pojo.RequestData;
import org.hoteia.qalingo.core.security.helper.SecurityUtil;
import org.hoteia.qalingo.core.util.CoreUtil;
import org.hoteia.qalingo.core.web.util.RequestUtil;
import org.hoteia.qalingo.web.mvc.form.ContactForm;
import org.hoteia.qalingo.web.mvc.form.CreateAccountForm;
import org.hoteia.qalingo.web.mvc.form.CustomerAddressForm;
import org.hoteia.qalingo.web.mvc.form.CustomerEditForm;
import org.hoteia.qalingo.web.mvc.form.ForgottenPasswordForm;
import org.hoteia.qalingo.web.mvc.form.PaymentForm;
import org.hoteia.qalingo.web.mvc.form.ResetPasswordForm;
import org.hoteia.qalingo.web.mvc.form.RetailerContactForm;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import org.hoteia.qalingo.core.domain.Retailer_;

@Service("webManagementService")
@Transactional
public class WebManagementService {

    @Autowired
    protected CustomerService customerService;

    @Autowired
    protected RetailerService retailerService;

    @Autowired
    protected CatalogCategoryService catalogCategoryService;

    @Autowired
    protected ProductService productService;

    @Autowired
    protected CheckoutService checkoutService;

    @Autowired
    protected CartService cartService;

    @Autowired
    protected OrderCustomerService orderCustomerService;

    @Autowired
    protected EngineSettingService engineSettingService;

    @Autowired
    protected EngineSessionService engineSessionService;

    @Autowired
    protected ReferentialDataService referentialDataService;

    @Autowired
    protected UrlService urlService;

    @Autowired
    protected EmailService emailService;

    @Autowired
    protected RequestUtil requestUtil;

    @Autowired
    protected SecurityUtil securityUtil;

    /**
     *
     */
    public void addToCart(final RequestData requestData, final String catalogCategoryCode, final String productSkuCode, final int quantity) throws Exception {
        final Retailer retailer = requestData.getMarketAreaRetailer();
        addToCart(requestData, retailer, catalogCategoryCode, productSkuCode, quantity);
    }

    /**
     *
     */
    public void addToCart(final RequestData requestData, final Retailer retailer, final String catalogCategoryCode, final String productSkuCode, final int quantity) throws Exception {
        // SANITY CHECK : sku code is empty or null : no sense
        if (StringUtils.isEmpty(productSkuCode)) {
            throw new Exception("");
        }

        // SANITY CHECK : quantity is equal zero : no sense
        if (quantity == 0) {
            throw new Exception("");
        }

        final Cart cart = requestData.getCart();
//        int finalQuantity = quantity;
//        if(cart != null){
//            Set<CartItem> cartItems = cart.getCartItems();
//            for (Iterator<CartItem> iterator = cartItems.iterator(); iterator.hasNext();) {
//                CartItem cartItem = (CartItem) iterator.next();
//                if (cartItem.getProductSkuCode().equalsIgnoreCase(productSkuCode)
//                        && cartItem.getRetailerId().equals(retailer)) {
//                    finalQuantity = finalQuantity + cartItem.getQuantity();
//                }
//            }
//        }

        cartService.addProductSkuToCart(cart, retailer, catalogCategoryCode, productSkuCode, quantity);
    }

    /**
     *
     */
    public void updateCart(final RequestData requestData, final String catalogCategoryCode, final String productSkuCode, final int quantity) throws Exception {
        final Retailer retailer = requestData.getMarketAreaRetailer();
        updateCart(requestData, retailer, catalogCategoryCode, productSkuCode, quantity);
    }

    /**
     *
     */
    public void updateCart(final RequestData requestData, final Retailer retailer, final String catalogCategoryCode, final String productSkuCode, final int quantity) throws Exception {
        final HttpServletRequest request = requestData.getRequest();

        // SANITY CHECK : sku code is empty or null : no sense
        if (StringUtils.isEmpty(productSkuCode)) {
            throw new Exception("");
        }

        // SANITY CHECK : quantity is equal zero : no sense
        if (quantity == 0) {
            throw new Exception("");
        }

        Cart cart = requestData.getCart();
        if(cart == null){
            EngineEcoSession engineEcoSession = requestUtil.getCurrentEcoSession(request);
            cart = engineEcoSession.addNewCart();
        }

        cartService.updateCartItem(cart, retailer, catalogCategoryCode, productSkuCode, quantity);

        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void updateCart(final RequestData requestData, final String skuCode, final int quantity) throws Exception {
        updateCart(requestData, null, skuCode, quantity);
    }

    /**
     *
     */
    public void updateCart(final RequestData requestData, final Customer customer) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Cart cart = requestData.getCart();
        if(cart != null){
            cart.setCustomerId(customer.getId());
            cart.setBillingAddressId(customer.getDefaultBillingAddressId());
            cart.setShippingAddressId(customer.getDefaultShippingAddressId());
        }
        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void updateCart(final RequestData requestData, final Long billingAddressId, final Long shippingAddressId) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Cart cart = requestData.getCart();
        if(cart != null){
            cart.setBillingAddressId(billingAddressId);
            cart.setShippingAddressId(shippingAddressId);
        }
        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void deleteCartItem(final RequestData requestData, final String productSkuCode) throws Exception {
        final Retailer retailer = requestData.getMarketAreaRetailer();
        deleteCartItem(requestData, retailer, productSkuCode);
    }

    /**
     *
     */
    public void deleteCartItem(final RequestData requestData, final Retailer retailer, final String productSkuCode) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Cart cart = requestData.getCart();
        Cart savedCart = cartService.deleteCartItem(cart, retailer, productSkuCode);
        requestUtil.updateCurrentCart(request, savedCart);
    }

    /**
     *
     */
    public void setShippingAddress(final RequestData requestData, final String customerShippingAddressId) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Customer customer = requestData.getCustomer();
        Cart cart = requestData.getCart();
        Long customerAddressId = Long.parseLong(customerShippingAddressId);
        cartService.setShippingAddress(cart, customer, customerAddressId);
        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void setBillingAddress(final RequestData requestData, final String customerBillingAddressId) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Customer customer = requestData.getCustomer();
        Cart cart = requestData.getCart();
        Long customerAddressId = Long.parseLong(customerBillingAddressId);
        cartService.setBillingAddress(cart, customer, customerAddressId);
        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void setDeliveryMethod(final RequestData requestData, final String deliveryMethodCode) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        Cart cart = requestData.getCart();
        cartService.setDeliveryMethod(cart, deliveryMethodCode);
        requestUtil.updateCurrentCart(request, cart);
    }

    /**
     *
     */
    public void cleanCart(final RequestData requestData) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        requestUtil.resetCurrentCart(request);
    }

    /**
     *
     */
    public void resetCustomerCredential(final RequestData requestData, final Customer customer, final ResetPasswordForm resetPasswordForm) throws Exception {
        resetCustomerCredential(requestData, customer, resetPasswordForm.getNewPassword());
    }

    /**
     *
     */
    public Customer buildAndSaveQuickNewCustomer(final RequestData requestData, final Market market, final MarketArea marketArea,
                                                 final CreateAccountForm createAccountForm) throws Exception {
        Customer customer = new Customer();

        customer.setLogin(createAccountForm.getEmail());
        customer.setLastname(createAccountForm.getLastname());
        customer.setPassword(securityUtil.generateAndEncodePassword());

        customer.setEmail(createAccountForm.getEmail());

        return buildAndSaveNewCustomer(requestData, market, marketArea, customer);
    }

    /**
     *
     */
    public Customer buildAndSaveNewCustomer(final RequestData requestData, final Market market, final MarketArea marketArea,
                                            final CreateAccountForm createAccountForm) throws Exception {
        Customer customer = new Customer();

        customer.setLogin(createAccountForm.getEmail());
        customer.setFirstname(createAccountForm.getFirstname());
        customer.setLastname(createAccountForm.getLastname());
        customer.setPassword(securityUtil.encodePassword(createAccountForm.getPassword()));

        customer.setEmail(createAccountForm.getEmail());

        CustomerAddress defaultAddress = new CustomerAddress();
        if(StringUtils.isNotEmpty(createAccountForm.getAddressName())){
            defaultAddress.setAddressName(createAccountForm.getAddressName());
        } else {
            defaultAddress.setAddressName(createAccountForm.getAddress1() + "(" + createAccountForm.getCity() + ")");
        }
        defaultAddress.setTitle(createAccountForm.getTitle());
        defaultAddress.setLastname(createAccountForm.getLastname());
        defaultAddress.setFirstname(createAccountForm.getFirstname());
        defaultAddress.setAddress1(createAccountForm.getAddress1());
        defaultAddress.setAddress2(createAccountForm.getAddress2());
        defaultAddress.setAddressAdditionalInformation(createAccountForm.getAddressAdditionalInformation());
        defaultAddress.setPostalCode(createAccountForm.getPostalCode());
        defaultAddress.setCity(createAccountForm.getCity());
        defaultAddress.setStateCode(createAccountForm.getStateCode());
        defaultAddress.setCountryCode(createAccountForm.getCountryCode());
        defaultAddress.setDefaultBilling(true);
        defaultAddress.setDefaultShipping(true);
        customer.getAddresses().add(defaultAddress);

        return buildAndSaveNewCustomer(requestData, market, marketArea, customer);
    }

    public Customer updateCurrentCustomer(final RequestData requestData, final Market market, final MarketArea marketArea, final CustomerEditForm customerEditForm) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        String customerLogin = requestUtil.getCurrentCustomerLogin(request);
        Customer customer = customerService.getCustomerByLoginOrEmail(customerLogin);

        customer.setLogin(customerEditForm.getEmail());
        customer.setFirstname(customerEditForm.getFirstname());
        customer.setLastname(customerEditForm.getLastname());

        return updateCurrentCustomer(requestData, customer);
    }

    public Customer activeNewCustomer(final RequestData requestData, Customer customer) throws Exception {
        customer.setValidated(true);
        return updateCurrentCustomer(requestData, customer);
    }

    public Customer updateOrSaveAddressCustomer(final RequestData requestData, final Market market, final MarketArea marketArea, final CustomerAddressForm customerAddressForm) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        String customerLogin = requestUtil.getCurrentCustomerLogin(request);
        Customer customer = customerService.getCustomerByLoginOrEmail(customerLogin);

        CustomerAddress customerAddress = new CustomerAddress();
        String addressId = customerAddressForm.getIdOrGuid();
        if(StringUtils.isNotEmpty(addressId)){
            customerAddress = customer.getAddress(new Long(addressId));
        }

        if(StringUtils.isNotEmpty(customerAddressForm.getAddressName())){
            customerAddress.setAddressName(customerAddressForm.getAddressName());
        } else {
            customerAddress.setAddressName(customerAddressForm.getAddress1() + "(" + customerAddressForm.getCity() + ")");
        }
        customerAddress.setAddressName(customerAddressForm.getAddressName());
        customerAddress.setTitle(customerAddressForm.getTitle());
        customerAddress.setLastname(customerAddressForm.getLastname());
        customerAddress.setFirstname(customerAddressForm.getFirstname());
        customerAddress.setAddress1(customerAddressForm.getAddress1());
        customerAddress.setAddress2(customerAddressForm.getAddress2());
        customerAddress.setAddressAdditionalInformation(customerAddressForm.getAddressAdditionalInformation());
        customerAddress.setPostalCode(customerAddressForm.getPostalCode());
        customerAddress.setCity(customerAddressForm.getCity());
        customerAddress.setStateCode(customerAddressForm.getStateCode());
        customerAddress.setCountryCode(customerAddressForm.getCountryCode());
        customerAddress.setDefaultBilling(true);
        customerAddress.setDefaultShipping(true);

        if(StringUtils.isEmpty(addressId)){
            customer.getAddresses().add(customerAddress);
        }

        return updateOrSaveAddressCustomer(requestData, market, marketArea, customer);
    }

    public Customer saveNewsletterSubscriptionAndSendEmail(final RequestData requestData, final String email) throws Exception {
        Customer customer = saveNewsletterSubscription(requestData, email);
        saveAndBuildNewsletterSubscriptionConfirmationMail(requestData, email);
        return customer;
    }

    public Customer saveNewsletterUnsubscriptionAndSendEmail(final RequestData requestData, final String email) throws Exception {
        Customer customer = saveNewsletterUnsubscription(requestData, email);
        saveAndBuildNewsletterUnsubscriptionConfirmationMail(requestData, email);
        return customer;
    }

    /**
     *
     */
    public void buildAndSaveContactMail(final RequestData requestData, final ContactForm contactForm) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();

        final ContactEmailBean contactEmailBean = new ContactEmailBean();
        BeanUtils.copyProperties(contactForm, contactEmailBean);
        contactEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_CONTACT));
        contactEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_CONTACT));
        contactEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_CONTACT));
        contactEmailBean.setToEmail(marketArea.getEmailToContact(contextNameValue));

        buildAndSaveContactMail(requestData, contactEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveRetailerContactMail(final RequestData requestData, final RetailerContactForm retailerContactForm) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();

        final List<SpecificFetchMode> retailerFetchPlans = new ArrayList<SpecificFetchMode>();
        retailerFetchPlans.add(new SpecificFetchMode(Retailer_.addresses.getName()));
        final Retailer retailerToContact = retailerService.getRetailerByCode(retailerContactForm.getRetailerCode(), new FetchPlan(retailerFetchPlans));

        final RetailerContactEmailBean retailerContactEmailBean = new RetailerContactEmailBean();
        BeanUtils.copyProperties(retailerContactForm, retailerContactEmailBean);
        retailerContactEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RETAILER_CONTACT));
        retailerContactEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_RETAILER_CONTACT));
        retailerContactEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RETAILER_CONTACT));
        retailerContactEmailBean.setToEmail(retailerToContact.getDefaultAddress().getEmail());

        buildAndSaveRetailerContactMail(requestData, retailerToContact, retailerContactEmailBean);
    }

    /**
     *
     */
    public void saveAndBuildNewsletterSubscriptionConfirmationMail(final RequestData requestData, final String email) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();

        final NewsletterEmailBean newsletterEmailBean = new NewsletterEmailBean();
        newsletterEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_SUBSCRIPTION));
        newsletterEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_SUBSCRIPTION));
        newsletterEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_SUBSCRIPTION));
        newsletterEmailBean.setToEmail(email);

        saveAndBuildNewsletterSubscriptionConfirmationMail(requestData, newsletterEmailBean);
    }

    /**
     *
     */
    public void saveAndBuildNewsletterUnsubscriptionConfirmationMail(final RequestData requestData, final String email) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();

        final NewsletterEmailBean newsletterEmailBean = new NewsletterEmailBean();
        newsletterEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_UNSUBSCRIPTION));
        newsletterEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_UNSUBSCRIPTION));
        newsletterEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEWSLETTER_UNSUBSCRIPTION));
        newsletterEmailBean.setToEmail(email);

        saveAndBuildNewsletterUnsubscriptionConfirmationMail(requestData, newsletterEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveCustomerNewAccountMail(final RequestData requestData, final CreateAccountForm createAccountForm) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();

        final CustomerNewAccountConfirmationEmailBean customerNewAccountConfirmationEmailBean = new CustomerNewAccountConfirmationEmailBean();
        BeanUtils.copyProperties(createAccountForm, customerNewAccountConfirmationEmailBean);
        customerNewAccountConfirmationEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEW_ACCOUNT_CONFIRMATION));
        customerNewAccountConfirmationEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_NEW_ACCOUNT_CONFIRMATION));
        customerNewAccountConfirmationEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_NEW_ACCOUNT_CONFIRMATION));
        customerNewAccountConfirmationEmailBean.setToEmail(createAccountForm.getEmail());

        customerNewAccountConfirmationEmailBean.setTitle(createAccountForm.getTitle());
        customerNewAccountConfirmationEmailBean.setFirstname(createAccountForm.getFirstname());
        customerNewAccountConfirmationEmailBean.setLastname(createAccountForm.getLastname());
        customerNewAccountConfirmationEmailBean.setEmail(createAccountForm.getEmail());

        customerNewAccountConfirmationEmailBean.setCustomerDetailsUrl(urlService.buildAbsoluteUrl(requestData, urlService.generateUrl(FoUrls.PERSONAL_DETAILS, requestData)));

        buildAndSaveCustomerNewAccountMail(requestData, customerNewAccountConfirmationEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveCustomerForgottenPasswordMail(final RequestData requestData, final Customer customer, final CustomerCredential customerCredential, final ForgottenPasswordForm forgottenPasswordForm) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final Locale locale = requestData.getLocale();
        final String contextNameValue = requestData.getContextNameValue();

        final CustomerForgottenPasswordEmailBean customerForgottenPasswordEmailBean = new CustomerForgottenPasswordEmailBean();
        BeanUtils.copyProperties(forgottenPasswordForm, customerForgottenPasswordEmailBean);
        customerForgottenPasswordEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
        customerForgottenPasswordEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
        customerForgottenPasswordEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_FORGOTTEN_PASSWORD));
        customerForgottenPasswordEmailBean.setToEmail(customer.getEmail());
        customerForgottenPasswordEmailBean.setToken(customerCredential.getResetToken());

        customerForgottenPasswordEmailBean.setTitle(referentialDataService.getTitleByLocale(customer.getTitle(), locale));
        customerForgottenPasswordEmailBean.setFirstname(customer.getFirstname());
        customerForgottenPasswordEmailBean.setLastname(customer.getLastname());
        customerForgottenPasswordEmailBean.setEmail(customer.getEmail());

        buildAndSaveCustomerForgottenPasswordMail(requestData, customer, customerCredential, customerForgottenPasswordEmailBean);
    }

    /**
     *
     */
    public CustomerCredential flagCustomerCredentialWithToken(final RequestData requestData, final Customer customer) throws Exception {
        if(customer != null){
            String token = UUID.randomUUID().toString();
            CustomerCredential customerCredential = customer.getCurrentCredential();
            if(customerCredential != null){
                customerCredential.setResetToken(token);
                Date date = new Date();
                customerCredential.setTokenTimestamp(new Timestamp(date.getTime()));
                customerService.saveOrUpdateCustomerCredential(customerCredential);
            }
            return customerCredential;
        }
        return null;
    }

    /**
     *
     */
    public void cancelCustomerCredentialToken(final RequestData requestData, final Customer customer) throws Exception {
        if(customer != null){
            CustomerCredential customerCredential = customer.getCurrentCredential();
            if(customerCredential != null){
                customerCredential.setResetToken("");
                customerCredential.setTokenTimestamp(null);
                customerService.saveOrUpdateCustomerCredential(customerCredential);
            }
        }
    }

    /**
     *
     */
    public void resetCustomerCredential(final RequestData requestData, final Customer customer, final String newPassword) throws Exception {
        if(customer != null){
            String clearPassword = newPassword;
            String encorePassword = securityUtil.encodePassword(clearPassword);
            CustomerCredential customerCredential = new CustomerCredential();
            customerCredential.setPassword(encorePassword);
            customerCredential.setDateUpdate(new Date());
            customer.getCredentials().add(customerCredential);

            customer.setPassword(encorePassword);

            customerService.saveOrUpdateCustomer(customer);
        }
    }

    /**
     *
     */
    public Customer buildAndSaveNewCustomer(final RequestData requestData, final Market market, final MarketArea marketArea, Customer customer) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        if(customer.getCode() == null){
            customer.setCode(CoreUtil.generateEntityCode());
        }

        if(customer.getPermalink() == null){
            String permalink = securityUtil.generatePermalink();
            customer.setPermalink(permalink);
        }

        customer.setPlatformOrigin(CustomerPlatformOrigin.STANDARD);

        customer.setDefaultLocale(marketArea.getDefaultLocalization().getCode());
        customer.setActive(true);
        customer.setDateCreate(new Date());
        customer.setDateUpdate(new Date());

        // WE SAVE A FIRST TIME TO EVICT DETACH ENTITY ISSUE WITH CUSTOMERGROUP - NOT THE BEST WAY
        Customer savedCustomer = customerService.saveOrUpdateCustomer(customer);

        CustomerGroup customerGroup = customerService.getCustomerGroupByCode(CustomerGroup.GROUP_FO_CUSTOMER);
        customer.getGroups().add(customerGroup);

        savedCustomer = customerService.saveOrUpdateCustomer(customer);

        Customer reloadedCustomer = customerService.getCustomerById(savedCustomer.getId());
        requestUtil.updateCurrentCustomer(request, reloadedCustomer);

        return reloadedCustomer;
    }

    public Customer updateCurrentCustomer(final RequestData requestData, Customer customer) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        customer.setActive(true);
        customer.setDateUpdate(new Date());

        // save market context phone etc

        // UPDATE CUSTOMER
        customerService.saveOrUpdateCustomer(customer);

        // UPDATE SESSION
        customer = customerService.getCustomerByLoginOrEmail(customer.getLogin());
        requestUtil.updateCurrentCustomer(request, customer);

        return customer;
    }

    public Customer updateOrSaveAddressCustomer(final RequestData requestData, final Market market, final MarketArea marketArea, Customer customer) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        // UPDATE CUSTOMER
        customerService.saveOrUpdateCustomer(customer);

        // UPDATE SESSION
        customer = customerService.getCustomerByLoginOrEmail(customer.getLogin());
        requestUtil.updateCurrentCustomer(request, customer);

        return customer;
    }

    public Customer deleteAddressCustomer(final RequestData requestData, final String customerAddressId) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        String customerLogin = requestUtil.getCurrentCustomerLogin(request);
        Customer customer = customerService.getCustomerByLoginOrEmail(customerLogin);
        CustomerAddress customerAddress = customer.getAddress(new Long(customerAddressId));

        // SANITY CHECK : wrong address id for this customer
        if(customerAddress == null){
            throw new Exception("");
        }

        Set<CustomerAddress> customerAddresses = customer.getAddresses();

        // SANITY CHECK : min address equal zero
        if(customerAddresses.size() < 2){
            throw new Exception("");
        }

        for (Iterator<CustomerAddress> iterator = customerAddresses.iterator(); iterator.hasNext();) {
            CustomerAddress customerAddressIterator = (CustomerAddress) iterator.next();
            if(customerAddressIterator.getId().equals(new Long(customerAddressId))){
                customerAddress = customerAddressIterator;
            }
        }
        customer.getAddresses().remove(customerAddress);

        // UPDATE CUSTOMER
        customerService.saveOrUpdateCustomer(customer);

        // UPDATE SESSION
        customer = customerService.getCustomerByLoginOrEmail(customer.getEmail());
        requestUtil.updateCurrentCustomer(request, customer);

        return customer;
    }

    public Customer addProductSkuToWishlist(final RequestData requestData, final String catalogCategoryCode, final String productSkuCode) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        final MarketArea marketArea = requestData.getMarketArea();
        Customer customer = requestData.getCustomer();
        customer = checkCustomerMarketArea(requestData, customer);

        customerService.addProductSkuToWishlist(marketArea, customer, catalogCategoryCode, productSkuCode);
        // TODO : denis : 20140904 : is it necessary to reload or not ?
        customer = customerService.getCustomerByLoginOrEmail(customer.getEmail());
        requestUtil.updateCurrentCustomer(request, customer);

        return customer;
    }

    public Customer removeProductSkuFromWishlist(final RequestData requestData, final String productSkuCode) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        final MarketArea marketArea = requestData.getMarketArea();
        Customer customer = requestData.getCustomer();
        customer = checkCustomerMarketArea(requestData, customer);

        customerService.removeProductSkuFromWishlist(marketArea, customer, productSkuCode);
        // TODO : denis : 20140904 : is it necessary to reload or not ?
        customer = customerService.getCustomerByLoginOrEmail(customer.getEmail());
        requestUtil.updateCurrentCustomer(request, customer);

        return customer;
    }

    public void savePaymentInformation(RequestData requestData, PaymentForm paymentForm) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        final MarketArea marketArea = requestData.getMarketArea();
        Customer customer = requestData.getCustomer();

        final CustomerPaymentInformation customerPaymentInformation = new CustomerPaymentInformation();
        customerPaymentInformation.setPaymentType(paymentForm.getPaymentType());
        customerPaymentInformation.setCardHolderName(paymentForm.getCardHolderName());
        customerPaymentInformation.setCardNumber(paymentForm.getCardNumber());
        customerPaymentInformation.setCardExpMonth(paymentForm.getCardExpMonth());
        customerPaymentInformation.setCardExpYear(paymentForm.getCardExpYear());
        customerPaymentInformation.setCardCVV(paymentForm.getCardCVV());
        customerPaymentInformation.setCustomerMarketAreaId(marketArea.getId());

        customerService.savePaymentInformation(customer, customerPaymentInformation);
        customer = customerService.getCustomerByLoginOrEmail(customer.getEmail());
        requestUtil.updateCurrentCustomer(request, customer);
    }

    public OrderCustomer buildAndSaveNewOrder(final RequestData requestData) throws Exception {
        final HttpServletRequest request = requestData.getRequest();
        final Customer customer = requestData.getCustomer();
        final Cart cart = requestData.getCart();

        OrderCustomer orderCustomer = checkoutService.checkout(customer, cart);

        requestUtil.deleteCurrentCartAndSaveEngineSession(request);

        // RELOAD ORDER FOR THE SESSION
        orderCustomer = orderCustomerService.getOrderByOrderNum(orderCustomer.getOrderNum());
        requestUtil.keepLastOrderInSession(requestData, orderCustomer);

        buildAndSaveNewOrderConfirmationMail(requestData, customer, orderCustomer);

        return orderCustomer;
    }

    public Customer saveNewsletterSubscription(final RequestData requestData, final String email) throws Exception {
        Customer customer = customerService.getCustomerByLoginOrEmail(email);
        MarketArea marketArea = requestData.getMarketArea();

        // SANITY CHECK : CHECK IF THE OPTIN ALREADY EXIST FOR THE MARKET AREA
        if(customer != null){
            CustomerMarketArea customerMarketArea = customer.getCurrentCustomerMarketArea(marketArea.getId());
            if(customerMarketArea != null){
                CustomerOptin customerOptin = customerMarketArea.getOptins(CustomerOptin.OPTIN_TYPE_WWW_NEWSLETTER);
                if(customerOptin != null){
                    throw new UniqueNewsletterSubscriptionException();
                }
            }
        }

        CustomerOptin customerOptin = new CustomerOptin();
        customerOptin.setType(CustomerOptin.OPTIN_TYPE_WWW_NEWSLETTER);
        customerOptin.setOrigin("MCOMMERCE");

        // HANDLE OPTIN
        if(customer != null){
            customer = checkCustomerMarketArea(requestData, customer);
            CustomerMarketArea customerMarketArea = customer.getCurrentCustomerMarketArea(marketArea.getId());
            if(customerMarketArea == null){
                customerMarketArea = new CustomerMarketArea(marketArea.getId());
                customerMarketArea.addOptins(customerOptin);
                customer.getCustomerMarketAreas().add(customerMarketArea);
            } else {
                customerMarketArea.addOptins(customerOptin);
            }
        } else {
            customer = new Customer();
            customer.setEmail(email);
            customer.setAnonymous(true);
            customer = checkCustomerMarketArea(requestData, customer);
            CustomerMarketArea customerMarketArea = new CustomerMarketArea(marketArea.getId());
            customerMarketArea.addOptins(customerOptin);
            customer.getCustomerMarketAreas().add(customerMarketArea);
        }

        customer = updateCurrentCustomer(requestData, customer);
        return customer;
    }

    public Customer saveNewsletterUnsubscription(final RequestData requestData, final String email) throws Exception {
        Customer customer = customerService.getCustomerByLoginOrEmail(email);
        MarketArea marketArea = requestData.getMarketArea();

        // SANITY CHECK : CHECK IF THE OPTIN ALREADY EXIST FOR THE MARKET AREA
        if(customer != null){
            CustomerMarketArea customerMarketArea = customer.getCurrentCustomerMarketArea(marketArea.getId());
            if(customerMarketArea != null){
                CustomerOptin customerOptin = customerMarketArea.getOptins(CustomerOptin.OPTIN_TYPE_WWW_NEWSLETTER);
                if(customerOptin != null){
                    customerMarketArea.getOptins().remove(customerOptin);
                }
            }
        }

        customer = updateCurrentCustomer(requestData, customer);
        return customer;
    }

    /**
     *
     */
    public void buildAndSaveContactMail(final RequestData requestData, final ContactEmailBean contactEmailBean) throws Exception {
        emailService.buildAndSaveContactMail(requestData, requestData.getVelocityEmailPrefix(), contactEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveRetailerContactMail(final RequestData requestData, final Retailer retailerToContact, final RetailerContactEmailBean retailerContactEmailBean) throws Exception {
        emailService.buildAndSaveRetailerContactMail(requestData, requestData.getCustomer(), requestData.getVelocityEmailPrefix(), retailerContactEmailBean);
    }

    /**
     *
     */
    public void saveAndBuildNewsletterSubscriptionConfirmationMail(final RequestData requestData, final NewsletterEmailBean newsletterEmailBean) throws Exception {
        emailService.saveAndBuildNewsletterSubscriptionnConfirmationMail(requestData, requestData.getVelocityEmailPrefix(), newsletterEmailBean);
    }

    /**
     *
     */
    public void saveAndBuildNewsletterUnsubscriptionConfirmationMail(final RequestData requestData, final NewsletterEmailBean newsletterEmailBean) throws Exception {
        emailService.saveAndBuildNewsletterUnsubscriptionConfirmationMail(requestData, requestData.getVelocityEmailPrefix(), newsletterEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveCustomerNewAccountMail(final RequestData requestData, final CustomerNewAccountConfirmationEmailBean customerNewAccountConfirmationEmailBean) throws Exception {
        emailService.buildAndSaveCustomerNewAccountMail(requestData, requestData.getVelocityEmailPrefix(), customerNewAccountConfirmationEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveCustomerForgottenPasswordMail(final RequestData requestData, final Customer customer, final CustomerCredential customerCredential, final CustomerForgottenPasswordEmailBean customerForgottenPasswordEmailBean) throws Exception {
        emailService.buildAndSaveCustomerForgottenPasswordMail(requestData, customer, requestData.getVelocityEmailPrefix(), customerForgottenPasswordEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveCustomerResetPasswordConfirmationMail(final RequestData requestData, final Customer customer) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final Locale locale = requestData.getLocale();
        final String contextNameValue = requestData.getContextNameValue();
        final String velocityPath = requestData.getVelocityEmailPrefix();

        final CustomerResetPasswordConfirmationEmailBean customerResetPasswordConfirmationEmailBean = new CustomerResetPasswordConfirmationEmailBean();
        customerResetPasswordConfirmationEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        customerResetPasswordConfirmationEmailBean.setFromName(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        customerResetPasswordConfirmationEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        customerResetPasswordConfirmationEmailBean.setToEmail(customer.getEmail());

        customerResetPasswordConfirmationEmailBean.setTitle(referentialDataService.getTitleByLocale(customer.getTitle(), locale));
        customerResetPasswordConfirmationEmailBean.setFirstname(customer.getFirstname());
        customerResetPasswordConfirmationEmailBean.setLastname(customer.getLastname());
        customerResetPasswordConfirmationEmailBean.setEmail(customer.getEmail());

        customerResetPasswordConfirmationEmailBean.setCustomerDetailsUrl(urlService.buildAbsoluteUrl(requestData, urlService.generateUrl(FoUrls.PERSONAL_DETAILS, requestData)));

        emailService.buildAndSaveCustomerResetPasswordConfirmationMail(requestData, customer, velocityPath, customerResetPasswordConfirmationEmailBean);
    }

    /**
     *
     */
    public void buildAndSaveNewOrderConfirmationMail(final RequestData requestData, final Customer customer, final OrderCustomer order) throws Exception {
        final MarketArea marketArea = requestData.getMarketArea();
        final String contextNameValue = requestData.getContextNameValue();
        final String velocityPath = requestData.getVelocityEmailPrefix();

        final OrderConfirmationEmailBean orderConfirmationEmailBean = new OrderConfirmationEmailBean();
        orderConfirmationEmailBean.setFromAddress(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        orderConfirmationEmailBean.setFromName(marketArea.getEmailFromName(contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        orderConfirmationEmailBean.setReplyToEmail(getEmailFromAddress(requestData, marketArea, contextNameValue, Email.EMAIl_TYPE_RESET_PASSWORD_CONFIRMATION));
        orderConfirmationEmailBean.setToEmail(customer.getEmail());

        if (order != null) {
            orderConfirmationEmailBean.setOrderNumber(order.getOrderNum());

            DateFormat dateFormat = requestUtil.getFormatDate(requestData, DateFormat.MEDIUM, DateFormat.MEDIUM);
            if (order.getExpectedDeliveryDate() != null) {
                orderConfirmationEmailBean.setExpectedDeliveryDate(dateFormat.format(order.getExpectedDeliveryDate()));
            } else {
                orderConfirmationEmailBean.setExpectedDeliveryDate("NA");
            }

            orderConfirmationEmailBean.setOrderItemsTotalWithCurrencySign(order.getOrderItemTotalWithStandardCurrencySign());
            orderConfirmationEmailBean.setOrderShippingTotalWithCurrencySign(order.getShippingTotalWithStandardCurrencySign());
            orderConfirmationEmailBean.setOrderTaxesTotalWithCurrencySign(order.getTaxTotalWithStandardCurrencySign());
            orderConfirmationEmailBean.setOrderTotalWithCurrencySign(order.getOrderTotalWithStandardCurrencySign());
        }

        emailService.buildAndSaveNewOrderConfirmationMail(requestData, customer, velocityPath, orderConfirmationEmailBean);
    }

    protected String getEmailFromAddress(final RequestData requestData, final MarketArea marketArea, final String contextNameValue, final String emailType) throws Exception{
        String emailFromAddress = marketArea.getEmailFromAddress(contextNameValue, emailType);
        if(StringUtils.isEmpty(emailFromAddress)){
            final HttpServletRequest request = requestData.getRequest();
            final String contextValue = requestUtil.getCurrentContextNameValue(request);
            emailFromAddress = engineSettingService.getDefaultEmailAddress(contextValue);
        }
        return emailFromAddress;
    }

    protected Customer checkCustomerMarketArea(final RequestData requestData, Customer customer) throws Exception{
        final MarketArea marketArea = requestData.getMarketArea();
        CustomerMarketArea customerMarketArea = customer.getCurrentCustomerMarketArea(marketArea.getId());
        if(customerMarketArea == null){
            // Create a CustomerMarketArea for this MarketArea
            customerMarketArea = new CustomerMarketArea();
            customerMarketArea.setMarketAreaId(marketArea.getId());
            customer.getCustomerMarketAreas().add(customerMarketArea);
            customerService.saveOrUpdateCustomer(customer);
            if(StringUtils.isNotEmpty(customer.getEmail())){
                customer = customerService.getCustomerByLoginOrEmail(customer.getEmail());
            }
        }
        return customer;
    }

}

redpajama_set_name: RedPajamaGithub


text:
Q: autoLink with onClick event I have a list of web address display in a ListView. Each item of ListView have a TextView and an ImageView. TextView have attribute autolink="web".
I also have event: onItemLongClick in this ListView to open details of each others. But when I do long click event on each item in list, they do open new page also open browser with link website in TextView.
How can I set when onItemLongClick, the TextView can't click into link? I try set TextView.setLinkClickable(false) but it isn't working.
Many thanks

A: You can achieve what you want in this way.

*

*on your .xml, add this to the TextView :
TextView
...
android:autoLink="web"
android:textIsSelectable="true"

*on your code use ListView click behavior and longClick behavior.

A: U can try Using :-
 Linkify.addLinks(txtView, Linkify.ALL);

A: In your onItemLongClick() method, return true to indicate that you have consumed the click event and it should not be passed on to any other listeners.
According to the docs, the return value is described as -

boolean   true if the callback consumed the long click, false otherwise

Returning true will NOT pass the long click event, which is also a click event, to the OnItemClickListener.

redpajama_set_name: RedPajamaStackExchange


text:
J. Cole Announces the off-Season Tour Coming to MGM Grand Garden Arena October 16, 2021
With 21 Savage and Special Guest Morray J. Cole with 21 Savage: The Off-Season Tour, with special guest Morray, is making a Las Vegas stop at the MGM Grand Garden Arena Saturday, Oct. 16, 2021 at 8 p.m. Tickets starting at $29.50, not including applicable service charges or fees, go on sale to the general public beginning Friday, June 25 at 10 a.m. … [Read more...] about J. Cole Announces the off-Season Tour Coming to MGM Grand Garden Arena October 16, 2021
Beyoncé to Perform at Allegiant Stadium on August 26, 2023


text:
Health Legislation Amendment (Podiatric Surgery and Other Matters) Bill 2004
a Bill for an Act to amend legislation relating to health, and for related purposes
Health and Ageing portfolio
Health Legislation Amendment (Podiatric Surgery and Other Matters) Act 2004
An Act to amend legislation relating to health, and for related purposes
Schedule 1—Amendment of legislation relating to health 4
Part 1—Amendments relating to payment of benefits for hospital treatment associated with podiatric surgery 4
Health Insurance Act 1973 4
Part 2—Provision of Hospital Casemix Protocol Data 6
National Health Act 1953 6
Part 3—Amendments relating to Pharmaceutical Benefits Scheme 7
Part 4—Miscellaneous amendments of other health legislation 13
Health and Other Services (Compensation) Act 1995 13
Health Insurance Amendment (Diagnostic Imaging, Radiation Oncology and Other Measures) Act 2003 13
[ Assented to 13 July 2004 ]
This Act may be cited as the Health Legislation Amendment (Podiatric Surgery and Other Matters) Act 2004 .
2. Schedule 1, Part 1
However, if any of the provision(s) do not commence within the period of 6 months beginning on the day on which this Act receives the Royal Assent, they commence on the first day after the end of that period.
5. Schedule 1, items 15 and 16
Immediately after the time specified in the Health and Other Services (Compensation) Act 1995 for the commencement of sections 21 and 24 of that Act.
Immediately after the time specified in the Health Insurance Amendment (Diagnostic Imaging, Radiation Oncology and Other Measures) Act 2003 for the commencement of item 8 of Schedule 1 to that Act.
Note: This table relates only to the provisions of this Act as originally passed by the Parliament and assented to. It will not be expanded to deal with provisions inserted in this Act after assent.
Schedule 1 — Amendment of legislation relating to health
Part 1 — Amendments relating to payment of benefits for hospital treatment associated with podiatric surgery
Health Insurance Act 1973
1 Subsection 3(1)
accredited podiatrist means a podiatrist who is accredited by the Minister in writing under section 3AAA.
2 Subsection 3(1) (at the end of paragraph (a) of the definition of professional attention )
Add "or".
3 Subsection 3(1) (at the end of the definition of professional attention )
; or (d) podiatric treatment by an accredited podiatrist.
4 After section 3
3AAA Accreditation of podiatrists
(1) The Minister may, in accordance with guidelines determined under subsection (2), decide whether to accredit a podiatrist.
(2) The Minister may, by instrument in writing:
(a) determine guidelines for making a decision as to whether a podiatrist is to be accredited; and
(b) from time to time, vary or revoke any guidelines so made.
(3) A decision as to whether a podiatrist should be accredited must be made in accordance with the guidelines in force at the time the decision is made.
(4) An instrument setting out guidelines determined under subsection (2) or varying or revoking such guidelines is a disallowable instrument for the purposes of section 46A of the Acts Interpretation Act 1901 .
(5) As soon as practicable after making a decision to accredit, or to refuse to accredit, a podiatrist, the Minister must notify the podiatrist, in writing, of that decision. If the decision is a decision to refuse to accredit, the notification must include reasons for the refusal.
3AAB Review by Administrative Appeals Tribunal
If the Minister has made a decision refusing to accredit a podiatrist, application may be made to the Administrative Appeals Tribunal for review of the decision.
Part 2 — Provision of Hospital Casemix Protocol Data
5 Paragraphs 23EA(3A)(b) and (c)
Repeal the paragraphs, substitute:
(b) in a patient de-identified state to the Department.
National Health Act 1953
6 After subsection 5B(3)
(3A) For the purposes of this Act and the Health Insurance Act 1973 , a declared day hospital facility must provide data specified in the Hospital Casemix Protocol:
(a) in a patient identifiable state, to a registered private health insurance organisation that has an applicable benefits agreement with the patient; and
(b) in a patient de-identified state, to the Department.
Part 3 — Amendments relating to Pharmaceutical Benefits Scheme
7 Subsection 4(1) (definition of pharmacist )
pharmacist means a person registered as a pharmacist or pharmaceutical chemist under a law of a State or Territory providing for the registration of pharmacists or pharmaceutical chemists, and includes a friendly society or other body of persons (whether corporate or unincorporate) carrying on business as a pharmacist.
8 Subsection 84(1) (definition of approved pharmacist )
approved pharmacist means a person for the time being approved under section 90 and includes:
(a) a person treated as having been so approved under any provision of a law of the Commonwealth other than section 91; and
(b) except so far as subsection 90(3) is concerned—a person treated as having been so approved under section 91.
9 Paragraph 90(3AA)(b)
(b) the acquisition, following the death of a person who was the owner or one of the owners of the pharmacy, of that person's interest in the business of the pharmacy; or
10 After subsection 90(3AB)
(3AC) For the purposes of paragraph (3AA)(b), if a person who is the owner or one of the owners of the business of a pharmacy dies, another person will be taken to have acquired the interest of the deceased person only after:
(a) a grant of probate of the will, or letters of administration of the estate, of the owner who has died, by a court of a State or Territory having jurisdiction in relation to the owner; and
(b) the transfer to that other person of that interest.
(3AD) Despite the grant of that probate or those letters of administration being taken to have had effect from the date of death of the owner, any permission to supply pharmaceutical benefits at or from particular premises that is granted under section 91 in respect of:
(a) a period preceding that grant of probate or those letters of administration; or
(b) a period following that grant of probate or those letters of administration and preceding the subsequent transfer of the business;
is unaffected.
11 Subsection 90(3C)
After "(3AB),", insert "(3AC), (3AD),".
12 At the end of section 90
(7) Subsection (6) does not permit an application to be made under subsection (1) by a beneficiary of a deceased approved pharmacist who is not himself or herself a pharmacist before the interest in the business of the deceased pharmacist is transferred to the beneficiary in the course of the administration of the estate of the deceased pharmacist.
13 After section 90
91 Application to supply pharmaceutical benefits following the death of approved pharmacist
(a) a person is an approved pharmacist in respect of a pharmacy at particular premises; and
(b) the approved pharmacist dies at any time on or after the commencement of this section; and
(c) another person claims to be:
(i) the executor, or one of the executors, of the will of the deceased pharmacist in respect of which probate has been granted; or
(ii) the executor, or one of the executors, of the will of the deceased pharmacist although probate has not yet been granted; or
(iii) a person, or one of the persons, to whom the administration of the estate of the deceased pharmacist has been granted; or
(iv) a person, or one of the persons, intending to apply for administration of the estate of the deceased pharmacist; and
(d) that other person applies to the Secretary for permission to supply pharmaceutical benefits at or from those premises;
the Secretary may, if the Secretary reasonably believes that the applicant is, or on the grant of probate of the will or letters of administration of the estate is likely to be, such an executor or administrator, grant the applicant permission to supply such pharmaceutical benefits at or from those premises.
(2) An application under subsection (1) in relation to the supply of pharmaceutical benefits at or from particular premises:
(a) must be made in writing in a form approved by the Secretary; and
(b) must be made as soon as reasonably practicable after the death of the pharmacist who previously supplied such pharmaceutical benefits at or from those premises; and
(c) must be accompanied by documentary evidence relating to:
(i) the identity of the applicant; and
(ii) the nature of the applicant's claim to be a person referred to in a subparagraph of paragraph 91(1)(c);
of a kind determined in writing by the Secretary for the purposes of this paragraph.
(3) A determination made for the purposes of paragraph (2)(c) is a disallowable instrument for the purposes of section 46A of the Acts Interpretation Act 1901 .
(4) For the purpose of considering an application under this section, the Secretary may, by notice in writing given to the applicant, require the applicant to provide such further information, or produce such further documents, to the Secretary as the Secretary specifies, within such period as the Secretary specifies.
(5) If the Secretary requires the provision of information or the production of documents within a specified period and the information or documents are not provided or produced within that period, the Secretary may treat the application as having been withdrawn.
(6) When the Secretary makes a decision to grant or refuse an application under this section, the Secretary must cause notice in writing of that decision to be given to the applicant. If the Secretary decides to refuse an application, the notice must include reasons for the refusal.
(7) If the Secretary grants an applicant permission to supply pharmaceutical benefits at or from premises the subject of the application:
(a) the person granted that permission is to be treated for all purposes of this Act as if the person is, and, since the referral day in relation to the permission, had been, approved under section 90 as an approved pharmacist in relation to the pharmacy at those premises; and
(b) any supply of pharmaceutical benefits at or from those premises by a pharmacist who is not an approved pharmacist after the referral day in relation to the permission and before the grant of that permission is to be treated as if it had been a supply of those pharmaceutical benefits by the person to whom the permission is granted; and
(c) references in this Act to an approval granted under section 90 include references to an approval treated as having been granted under section 90 by paragraph (a); and
(d) the conditions to which an approval granted under section 90 is subject (including any condition that is imposed by means of the Minister's determination under paragraph 92A(1)(f)) apply also to an approval that is treated as having been granted under section 90 by paragraph (a); and
(e) the rights conferred and obligations imposed on an approved pharmacist apply to that person in his or her activities as such an approved pharmacist.
(8) For the purposes of subsection (7), the referral day , in relation to a permission granted under this section, is:
(a) unless paragraph (b) applies—the day following the date of death of the deceased pharmacist to whom the application for permission related; or
(b) if there has been a prior permission granted under this section in relation to the premises to which the permission relates—the day following the date the prior permission was revoked.
(9) A permission granted to a person under subsection (1) in relation to particular premises continues, unless it is sooner revoked, until that person or another person is approved by the Secretary under section 90 in respect of those premises.
(10) Nothing in this section authorises the Secretary to grant a permission under subsection (1) to a person to supply pharmaceutical benefits at or from particular premises at which the person is not permitted, under the law of the State or Territory in which the premises are situated, to carry on business.
(11) If:
(a) probate of the will, or administration of the estate, of a deceased approved pharmacist is granted; and
(b) the person granted a permission under subsection (1) in relation to the supply of pharmaceutical benefits at or from premises where that pharmacist carried on business is not, or is not included among persons who are, granted that probate or administration;
he or she must, as soon as he or she becomes aware of that fact, notify the Secretary in writing of that fact.
(12) If the Secretary becomes aware, either as a result of a notification under subsection (11) or otherwise, that:
(b) the person granted a permission under subsection (1) is not, or is not included among persons who are, granted that probate or administration;
the Secretary must, by notice in writing given to the person granted that permission, revoke the permission.
(13) If a partnership agreement provides for the disposal of the pharmacy business of a deceased approved pharmacist to any surviving partner or partners, nothing in this section is to be taken to override the operation of the terms of that agreement.
14 After subsection 105AB(7)
(7AA) An application may be made to the Tribunal for review of a decision of the Secretary:
(a) under subsection 91(1) granting or refusing an application under section 91; or
(b) under subsection 91(5) treating an application under section 91 as having been withdrawn; or
(c) under subsection 91(12) revoking a permission granted under section 91.
Part 4 — Miscellaneous amendments of other health legislation
Health and Other Services (Compensation) Act 1995
15 Paragraph 21(6)(c)
Omit "that", substitute "than".
Health Insurance Amendment (Diagnostic Imaging, Radiation Oncology and Other Measures) Act 2003
17 Item 8 of Schedule 1
Repeal the item, substitute:
8 Subsection 3(1) (definition of proprietor , twice occurring)
Repeal the definitions, substitute:
proprietor :
(a) in relation to a pathology laboratory—means the person or authority having effective control of:
(i) the laboratory premises, whether or not the holder of an estate or interest in the premises; and
(ii) the use of equipment used in the laboratory; and
(iii) the employment of staff in the laboratory; and
(b) in relation to diagnostic imaging premises or a base for mobile diagnostic imaging equipment—has the meaning given by section 23DZO; and
(c) in relation to radiation oncology premises or a base for mobile radiation oncology equipment—has the meaning given by section 23DZZN; and
(d) in relation to other premises—means the person, authority or body of persons having effective control of the premises, whether or not he or she or it is the holder of an estate or interest in the premises.
Repeal the item.
House of Representatives on 1 April 2004
Senate on 13 May 2004 ]


Wow, what a month March was! I have so many things to share with you!
I've decided that going forward I'll be blogging my newsletters so that it's easier for you to find and read them.
I'll still be sending out the contents as a monthly email to my newsletter list, so if you'd like to receive those, you can sign up here.
Ok, onwards with all the news!
I've been a busy bee researching how best to give my customers the products they're requesting. After a successful winter trial, I'm delighted to announce that I've added my full Fine Art Collection to my Redbubble.com store.
There you will find a wide variety of print products, homewares such as cushions and mugs, posters, tote bags (my personal favourite) and much more.
To browse the available products, simply head over to my Prints, Gifts and Homewares page.
Due to popular demand, I've created some new 2 hour workshops in Perth (Scotland) which are focused on specific topics. These are available throughout the year and once purchased can be scheduled for a mutually convenient date.
Full details can be found on the Workshops page.
Tickets for the event are available via the Art Fair's website. I also have a small number of complimentary tickets available for the show. If you would like to come along to the private view or weekend event, get in touch and I'll send you the details for how to claim your free tickets.
ArTay is a unique event in Scotland's Visual Arts calendar. It is part of Perth Festivals of the Arts programme of events. It features over 300 original works by over 80 Contemporary Scottish artists and makers.
I will have a selection of limited edition prints on display and for sale at the event.
For more details, contact Frames Gallery who host the event.
I had an amazing time at The Photography Show this year. I worked with ChromaLuxe this year and provided imagery for their stand. It looked brilliant. Thank you to everyone who visited the stand to see my work.
I wrote a full review of the show here with my favourite finds, including GamerGram, Vallerret Gloves and more.
And last but by no means least, this month's edition of The Perthshire Magazine features an article by me that's all about macro photography!
Spring is the time for pretty flowers, creepy critters and fuzzy beasties – the perfect time for macro!
Check out the article for free at the link below, and if you would like any help with your macro photography, perhaps take a look at my macro photography workshops.
That's everything for this month! I'll be back in May with plenty more news!


We stay in a Beautiful Motel that was built in 2015. Its the perfect place to sit back and relax after a long day in the field. Each room has its own Bathroom, T.V, Fridge, Office Table and extremely comfortable beds. The Motel has Wi-Fi and a Cell tower right next door so service should be great. There is a Laundry mat and Convenience store right next door just incase you forget some basic amenities. There are 9 Bedrooms giving us enough room to comfortable have 12 hunters per week. You will be provided with some amazing home cooked meals after long days out in the outdoors. There is also a sitting room where you can kick back relax and talk about your days adventures.
Copyright Kevin Giesbrecht. All rights reserved.


We have several options for enrollment at our center. Students can be enrolled anywhere from one to five days a week, either mornings, afternoons, or both. For parents who just need an extra half hour after school dismissal to pick up their child, we also offer an immediate care program. To qualify for the immediate care program, children need to be picked up by 3:45 on the days they are here.
During school breaks, students can attend Bright Horizons during normal center hours, 6:30 am to 6:00 pm. Costs vary from the before and after-school program, and usually include an activity fee to cover the costs of field trips and on-site activities.
We share the playground with the Downtown School. It includes play equipment with a soft landing pad and a large field area. This allows school age children to have several games running at one time, plenty of room to play, and lots of space to spread out and move freely. The playground is located on 6th Street, between Watson Powell Parkway and Grand Avenue.


Politicians from the local area visited the Base yesterday, encouraging young people to vote in the upcoming General Election.
Chris Webb (Labour), Bill Green (Liberal Democrats), Paul White (UKIP) and Tina Rothery (Green) explained their policies – and took questions from – an audience of 12 young people.
As a result of the session, several of the young people who attended feel more encouraged to vote.


1885 – Indian National Congress, a political party of India is founded in Bombay Presidency, British India.
1948 – United Nations Security Council Resolution 64 and 65 relating to Indonesia are adopted.
1972 – Kim Il-sung, already Prime Minister of North Korea and First Secretary of the Workers' Party of Korea, becomes the first President of North Korea.
1978 – With the crew investigating a problem with the landing gear, United Airlines Flight 173 runs out of fuel and crashes in Portland, Oregon, killing ten. As a result, United Airlines instituted the industry's first crew resource management program.
2011 – Roboski airstrike: Turkish warplanes bomb 34 Kurds of Turkish nationality in the district of Uludere.
Wikimedia Commons has media related to December 28.
This page was last modified on 10 January 2016, at 08:26.