diff --git a/src/main/java/sk/kasv/babcak/Christmas.java b/src/main/java/sk/kasv/babcak/Christmas.java
index b48d7dcfa082ddbaa8432df740c9083d6dec5bcf..d5ac01971ddef7d9a12052f6fa0d701bc66e745f 100644
--- a/src/main/java/sk/kasv/babcak/Christmas.java
+++ b/src/main/java/sk/kasv/babcak/Christmas.java
@@ -1,5 +1,7 @@
 package sk.kasv.babcak;
 
+import sk.kasv.babcak.worldx.model.DayMonthYear;
+
 import java.util.regex.*;
 public class Christmas {
     public boolean regexChristmas(String date){
@@ -8,4 +10,36 @@ public class Christmas {
         Matcher matcher = pattern.matcher(date);
         return matcher.matches();
     }
+
+    public DayMonthYear parseDate(String date){
+        int day, month, year;
+        day = Integer.parseInt(date.substring(8,9));
+        month = Integer.parseInt(date.substring(5,7));
+        year = Integer.parseInt(date.substring(0,4));
+
+        boolean result = checkDateValue(day,month,year);
+        if(result){
+            DayMonthYear dmy = new DayMonthYear(day, month, year);
+            return dmy;
+        } else {
+            return null;
+        }
+    }
+
+    public boolean checkDateValue(int d, int m, int y){
+        if (d < 1 || d > 31 || m > 12 || m < 1 || y < 1900 || y > 2099)
+            return false;
+        if ( (m == 4 || m == 6 || m == 9 || m == 11) && d == 31)
+            return false;
+        if (m == 2) {
+            if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) {
+                if (d > 29)
+                    return false;
+            } else {
+                if (d > 28)
+                    return false;
+            }
+        }
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/sk/kasv/babcak/worldx/model/DayMonthYear.java b/src/main/java/sk/kasv/babcak/worldx/model/DayMonthYear.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5d4eed29d24f1445c517eeaa2ff37cde434d510
--- /dev/null
+++ b/src/main/java/sk/kasv/babcak/worldx/model/DayMonthYear.java
@@ -0,0 +1,15 @@
+package sk.kasv.babcak.worldx.model;
+
+public class DayMonthYear {
+    private int day;
+
+    private int month;
+
+    private int year;
+
+    public DayMonthYear(int day, int month, int year){
+        this.day = day;
+        this.month = month;
+        this.year = year;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/sk/kasv/babcak/worldx/servercontroller/ChristmasController.java b/src/main/java/sk/kasv/babcak/worldx/servercontroller/ChristmasController.java
index b78fbcfb7b0317a7db10b2f9df318ef8ac7a00ab..107da69ad4009f9980a3e0e00771d08a055b74a4 100644
--- a/src/main/java/sk/kasv/babcak/worldx/servercontroller/ChristmasController.java
+++ b/src/main/java/sk/kasv/babcak/worldx/servercontroller/ChristmasController.java
@@ -5,8 +5,10 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RestController;
 import sk.kasv.babcak.Christmas;
+import sk.kasv.babcak.worldx.model.DayMonthYear;
 
-import java.util.Date;
+import java.time.LocalDate;
+import java.time.Period;
 
 @RestController
 public class ChristmasController {
@@ -17,6 +19,32 @@ public class ChristmasController {
         if(!result){
             return ResponseEntity.status(400).body("{\"error\":\"incorrect date format (YYYY-MM-DD)\"}");
         }
-        return ResponseEntity.status(200).body("Date is OK");
+
+        ch.parseDate(dateValue);
+        int days = calculateDaysToChristmas(dateValue);
+        int months = calculateMonthsToChristmas(dateValue);
+        return ResponseEntity.status(200).body("{\"monthsToChristmas\":"+months+",\"daysToChristmas\":"+days+"}");
+    }
+
+    private int calculateDaysToChristmas(String dateValue) {
+        LocalDate date = LocalDate.parse(dateValue);
+        LocalDate christmas = LocalDate.of(date.getYear(),12, 25);
+
+        if (date.isAfter(christmas)) {
+            christmas = christmas.plusYears(1);
+        }
+
+        return Period.between(date, christmas).getDays();
+    }
+
+    private int calculateMonthsToChristmas(String dateValue) {
+        LocalDate date = LocalDate.parse(dateValue);
+        LocalDate christmas = LocalDate.of(date.getYear(),12, 25);
+
+        if (date.isAfter(christmas)) {
+            christmas = christmas.plusYears(1);
+        }
+
+        return (int) Period.between(date, christmas).toTotalMonths();
     }
 }
\ No newline at end of file
diff --git a/src/main/java/sk/kasv/babcak/worldx/servercontroller/MainAPI.java b/src/main/java/sk/kasv/babcak/worldx/servercontroller/MainAPI.java
index 673535b282dc771a3e72e45a13e0ebaa59febf01..c8d7be73e947b7223ce4f49538b4ef0ca37a29dc 100644
--- a/src/main/java/sk/kasv/babcak/worldx/servercontroller/MainAPI.java
+++ b/src/main/java/sk/kasv/babcak/worldx/servercontroller/MainAPI.java
@@ -8,5 +8,4 @@ public class MainAPI {
     public static void main(String[] args) {
         SpringApplication.run(sk.kasv.babcak.worldx.servercontroller.MainAPI.class, args);
     }
-
 }
\ No newline at end of file
diff --git a/src/test/java/sk/kasv/babcak/ChristmasTest.java b/src/test/java/sk/kasv/babcak/ChristmasTest.java
index dae942c2708b51044a2fc8dbee55e1421bc847c8..52be08bce2d101579bc8ff46a471c495c32b86ce 100644
--- a/src/test/java/sk/kasv/babcak/ChristmasTest.java
+++ b/src/test/java/sk/kasv/babcak/ChristmasTest.java
@@ -21,4 +21,22 @@ class ChristmasTest {
         assertFalse(ch.regexChristmas("2015-11-32"));
         assertFalse(ch.regexChristmas("1999-00-05"));
     }
+
+    @Test
+    void checkDateValue(){
+        Christmas ch = new Christmas();
+        assertTrue(ch.checkDateValue(12,5,2024));
+        assertTrue(ch.checkDateValue(31, 12, 2000));
+        assertTrue(ch.checkDateValue(28, 2, 2020));
+
+        assertFalse(ch.checkDateValue(0,1,2000));
+        assertFalse(ch.checkDateValue(32,12,2000));
+        assertFalse(ch.checkDateValue(30,2,2020));
+        assertFalse(ch.checkDateValue(29,2,2021));
+        assertFalse(ch.checkDateValue(31,4,2023));
+        assertFalse(ch.checkDateValue(31,4,2100));
+        assertFalse(ch.checkDateValue(18,15,2019));
+        assertFalse(ch.checkDateValue(18,0,2019));
+        assertFalse(ch.checkDateValue(0,7,2019));
+    }
 }
\ No newline at end of file