[i-adj] + 思いをする [na-adj] + な + 思いをする [verb (plain)] + 思いをする [person] + に + [i-adj / na-adj + な] + 思いをさせる
思いをする means "to go through" a feeling: you had a frightening time, an embarrassing moment, a lonely stretch. An adjective describing the feeling goes in front of おもい思い – an い-adjective as it is, a な-adjective with な – and the person who went through it is the subject.
A な-adjective keeps its な: ×不快思い → 不快な思い. A plain verb can stand in front too, often with ような: しぬ死ぬようなおもい思いをした, "I thought I was going to die".
The causative おもい思いをさせる means you made someone feel it, and the person who suffered takes に. With てしまう it is an apology or a regret, and it is the standard wording when a business apologises to a customer.