Skip to content

Commit

Permalink
Merge pull request #66 from DeveloperAcademy-POSTECH/feat/#53
Browse files Browse the repository at this point in the history
Feat/#53
  • Loading branch information
piriram authored May 23, 2024
2 parents 7fb7e8e + a5ff5fb commit 8b84e96
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 150 deletions.
7 changes: 1 addition & 6 deletions MC2-Team3-Pilling/MC2_Team3_PillingApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,7 @@ struct MC2_Team3_PillingApp: App {
var body: some Scene {
WindowGroup {
NavigationStack{
if user.isEmpty {
OnboardingFirstView()
}
else{
MainView()
}
SplashScreenView()
}

}
Expand Down
50 changes: 25 additions & 25 deletions MC2-Team3-Pilling/Model/Model.swift
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ final class PeriodPill:Identifiable{
self.startIntake = startIntake
self.missDay = 0
self.finishIntake = nil
// print(self.intakeCal) []
// print(self.intakeCal) []
}


Expand Down Expand Up @@ -103,33 +103,33 @@ final class PillInfo:Identifiable{
}
extension PeriodPill{
func printAllDetails() {
print("Period Pill Details:")
print("ID: \(id)")
print("Start Intake: \(startIntake)")
if let finish = finishIntake {
print("Finish Intake: \(finish)")
} else {
print("Finish Intake: None")
}
print("Miss Day: \(missDay)")
print("Pill Info:")
pillInfo.printAllDetails()
print("Intake Calendar:")
for dayData in intakeCal {
dayData.printAllDetails()
}
// if let user = userInfo {
// print("User Info:")
// user.printAllDetails()
// } else {
// print("User Info: None")
// }
print("Period Pill Details:")
print("ID: \(id)")
print("Start Intake: \(startIntake)")
if let finish = finishIntake {
print("Finish Intake: \(finish)")
} else {
print("Finish Intake: None")
}
print("Miss Day: \(missDay)")
print("Pill Info:")
pillInfo.printAllDetails()
print("Intake Calendar:")
for dayData in intakeCal {
dayData.printAllDetails()
}
// if let user = userInfo {
// print("User Info:")
// user.printAllDetails()
// } else {
// print("User Info: None")
// }
}
func addDayDataEntries(count: Int,dayData:DayData) {
for _ in 0..<count {
self.intakeCal.append(dayData)
}
for _ in 0..<count {
self.intakeCal.append(dayData)
}
}
}

extension DayData{
Expand Down
2 changes: 1 addition & 1 deletion MC2-Team3-Pilling/View/MainView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ struct MainView: View {
@State private var showingMedicineSheet = false

// @State private var selectedPill: PillInfo? = nil
@State private var selectedPill: PillInfo?
@State private var selectedPill: PillInfo?

var body: some View {

Expand Down
230 changes: 115 additions & 115 deletions MC2-Team3-Pilling/View/OnboardingSecondView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,135 +16,135 @@ struct OnboardingSecondView: View {
@Environment(\.modelContext) private var modelContext
@Query var user:[UserInfo]




var body: some View {
VStack{
Image("onboardingSecond")
//.resizable()
//.frame(width: 240, height: 240)

// Text
HStack {
VStack(alignment: .leading) {
NavigationStack{
if !isActive {
VStack{
Image("onboardingSecond")
//.resizable()
//.frame(width: 240, height: 240)

// Text
Text("알람 받을 시간을 설정해주세요!")
.largeBold()
.padding(.bottom, 2)
HStack {
VStack(alignment: .leading) {
// Text
Text("알람 받을 시간을 설정해주세요!")
.largeBold()
.padding(.bottom, 2)

Text("설정은 추후에 변경 가능합니다.")
.secondaryRegular()
}
Spacer()
}
.padding()

Text("설정은 추후에 변경 가능합니다.")
.secondaryRegular()
}
Spacer()
}
.padding()


Button(action: {
}, label: {

ZStack{
DatePicker("복용 시간", selection: $alarmTime, displayedComponents: .hourAndMinute)
}
.padding([.leading, .trailing], 15)
}
)
.padding(.vertical, 15)
.frame(maxWidth: .infinity)
.background(.customGray02)
.clipShape(RoundedRectangle(cornerRadius: 10))
.foregroundColor(.secondary)
.padding()


VStack(alignment: .leading){
Toggle("소리 알람여부추가", isOn: $alarmToggle)
.regular()
.padding(.bottom, 2)

HStack {
Image(systemName: "info.circle.fill")
Text("소리를 OFF하면 라이브 액티비티로만 알려줘요!")
.font(.callout)
}
.foregroundStyle(.secondary)
}
.padding()

Spacer()

Button(action: {
dataSave()
}) {
Text("설정완료!")
.font(.title3)
.bold()
.padding(.vertical, 25)

Button(action: {
}, label: {

ZStack{
DatePicker("복용 시간", selection: $alarmTime, displayedComponents: .hourAndMinute)
}
.padding([.leading, .trailing], 15)
}
)
.padding(.vertical, 15)
.frame(maxWidth: .infinity)
.background(Color.customGreen)
.clipShape(RoundedRectangle(cornerRadius: 20))
.foregroundColor(.black)
.background(.customGray02)
.clipShape(RoundedRectangle(cornerRadius: 10))
.foregroundColor(.secondary)
.padding()


VStack(alignment: .leading){
Toggle("소리 알람여부추가", isOn: $alarmToggle)
.regular()
.padding(.bottom, 2)

HStack {
Image(systemName: "info.circle.fill")
Text("소리를 OFF하면 라이브 액티비티로만 알려줘요!")
.font(.callout)
}
.foregroundStyle(.secondary)
}
.padding()

Spacer()

Button(action: {
dataSave()
}) {
Text("설정완료!")
.font(.title3)
.bold()
.padding(.vertical, 25)
.frame(maxWidth: .infinity)
.background(Color.customGreen)
.clipShape(RoundedRectangle(cornerRadius: 20))
.foregroundColor(.black)
.padding()
}

}
} else {
MainView()
}

// NavigationLink with isActive binding
NavigationLink(destination: MainView(), isActive: $isActive) {
EmptyView()
}

}
.onAppear{
print(intakeDay)
}
}
func dataSave(){
if let selectePillInfo = pillInfo {
modelContext.insert(selectePillInfo)

let startIntake = Config.DateToString(date: Date(), format: Config.dayformat)

let periodPill = PeriodPill(pillInfo: selectePillInfo, startIntake: startIntake)

let startDate = Config.StringToDate(dateString: periodPill.startIntake, format: dayformat)
let today = Config.daysFromStart(startDay: startDate!)

let wholeDay = selectePillInfo.wholeDay
for idx in 0..<wholeDay {
let dayData = DayData(num: idx)
// dayData.periodPill = periodPill
modelContext.insert(dayData)
periodPill.intakeCal.append(dayData)
}

//이미 지난 것은 복용 status=1로 변경
if today>1{
for idx in 0..<today{
periodPill.intakeCal[idx].status=1
if user.isEmpty {
if let selectePillInfo = pillInfo{
modelContext.insert(selectePillInfo)

let startIntake = Config.DateToString(date: Date(), format: Config.dayformat)

let periodPill = PeriodPill(pillInfo: selectePillInfo, startIntake: startIntake)

let startDate = Config.StringToDate(dateString: periodPill.startIntake, format: dayformat)
let today = Config.daysFromStart(startDay: startDate!)

let wholeDay = selectePillInfo.wholeDay
for idx in 0..<wholeDay {
let dayData = DayData(num: idx)
// dayData.periodPill = periodPill
modelContext.insert(dayData)
periodPill.intakeCal.append(dayData)
}

//이미 지난 것은 복용 status=1로 변경
if today>1{
for idx in 0..<today{
periodPill.intakeCal[idx].status=1
}
}

//위약 status 초기화
for idx in pillInfo!.intakeDay..<wholeDay{
periodPill.intakeCal[idx].status=3
}

modelContext.insert(periodPill)

let scheduleTime = Config.DateToString(date: alarmTime, format: Config.Hourformat)
let userInfo = UserInfo(scheduleTime: scheduleTime, curPill: periodPill)
userInfo.isAlarm = alarmToggle

modelContext.insert(userInfo)

do {
try modelContext.save()
print("스데 저장 성공")
isActive = true
} catch {
print("Failed to save context: \(error.localizedDescription)")
}

}

//위약 status 초기화
for idx in pillInfo!.intakeDay..<wholeDay{
periodPill.intakeCal[idx].status=3
}

modelContext.insert(periodPill)

let scheduleTime = Config.DateToString(date: alarmTime, format: Config.Hourformat)
let userInfo = UserInfo(scheduleTime: scheduleTime, curPill: periodPill)
userInfo.isAlarm = alarmToggle

modelContext.insert(userInfo)

do {
try modelContext.save()
print("스데 저장 성공")
isActive = true
} catch {
print("Failed to save context: \(error.localizedDescription)")
}

}
else{

Expand Down
14 changes: 11 additions & 3 deletions MC2-Team3-Pilling/View/SplashScreenView.swift
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@

import SwiftUI
import SwiftData

struct SplashScreenView: View {
@State var isActive: Bool = false

@Query var user:[UserInfo]
var body: some View {
if isActive {
ContentView()
if user.first != nil{
NavigationStack{
MainView()
}
}
else{
OnboardingFirstView()
}
} else {
VStack {
Image("Splash")
Expand All @@ -15,7 +23,7 @@ struct SplashScreenView: View {

}
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
withAnimation {
self.isActive = true
}
Expand Down

0 comments on commit 8b84e96

Please sign in to comment.