using System.Collections.Generic;
public int Id { get; set; }
public List<DateTime> Days { get; set; }
public char Shift { get; set; }
public int WorkingDay { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public List<WeekWork> weekWorks { get; set; }
public static void Main()
List<Employee> employees = new List<Employee>{ new Employee(){Id = 1, Name = "Mateusz", LastName = "Test"},
new Employee(){Id = 2, Name = "Marcin", LastName = "Jakis"},
new Employee(){Id = 2, Name = "Normalnie", LastName = "Nienormalny"} };
WeekWork weekWork = new WeekWork();
DateTime CurrentDate = DateTime.Now.AddMonths(1);
DateTime StartMonth = CurrentDate.AddDays(-CurrentDate.Day + 1);
DateTime CheckWeek = StartMonth;
while (StartMonth.DayOfWeek.ToString() != "Monday")
StartMonth = StartMonth.AddDays(-1);
IDictionary<int, int> Weeks = new Dictionary<int, int>();
Weeks.Add(1, CheckWeek.AddDays(7 - temp - 1).Day);
for(int i = 2; i <= 4; i++)
int x = Weeks.ElementAt(i - 2).Value + 6;
Weeks.Add(i, CheckWeek.AddDays(x).Day);
DateTime LastWeek = CheckWeek.AddDays(Weeks.ElementAt(3).Value);
while (LastWeek.Day != DateTime.DaysInMonth(CurrentDate.Year, CurrentDate.Month))
LastWeek = LastWeek.AddDays(+1);
Weeks.Add(5, LastWeek.Day);
Random rand = new Random();
List<int> listNumbers = new List<int>();
for (int i = 0; i < employees.Count(); i++)
number = rand.Next(1, employees.Count + 1);
} while (listNumbers.Contains(number));
for (int i = 1; i <= 5; i++)
foreach (int val in listNumbers)
var emp = employees.ElementAt(val-1);
Console.WriteLine("Night");
Console.WriteLine("Swing");
Console.WriteLine("Day");
for (int day = 1; day <= DateTime.DaysInMonth(CurrentDate.Year, CurrentDate.Month); day++)
if (Weeks.ElementAt(0).Value >= day)
Console.WriteLine(emp.Name);
for (int day = 1; day <= DateTime.DaysInMonth(CurrentDate.Year, CurrentDate.Month); day++)
if (Weeks.ElementAt(0).Value >= day)
foreach (int val in listNumbers)
var emp = employees.ElementAt(val-1);
if ((Weeks.ElementAt(0).Value < day) && (Weeks.ElementAt(3).Value >= day))
if ((Weeks.ElementAt(3).Value < day) && (Weeks.ElementAt(4).Value >= day))