예제 #1
0
 public ReqRpt014TableViewModel(ReqRpt014PostModel postModel)
 {
     StartTime = DateTime.ParseExact(postModel.StartDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);
     if (postModel.StartCategory == "day")
     {
         StartTime = StartTime.Add(StartOfDay);
     }
     else
     {
         StartTime = StartTime.Add(EndOfDay);
     }
     EndTime = DateTime.ParseExact(postModel.EndDate, "yyyy-MM-dd", System.Globalization.CultureInfo.CurrentCulture);
     if (postModel.EndCategory == "day")
     {
         EndTime = EndTime.Add(StartOfDay);
     }
     else
     {
         EndTime = EndTime.Add(EndOfDay);
     }
     ProductID = postModel.ProductID;
     Initialize();
 }
예제 #2
0
        public ReturnCode ParseFile(string fileName)
        {
            // Try reading the file into lines
            string[] lines;
            try
            {
                lines = IOUtility.PermissiveReadAllLines(fileName);
            }
            catch (Exception ex)
            {
                return(ReturnCode.COULD_NOT_OPEN_FILE);
            }
            if (lines.Length < 2)
            {
                return(ReturnCode.CORRUPTED_FILE);
            }

            // Read the first line
            string[] tokens;
            tokens = lines[0].Split(',');
            if (tokens[0].ToLower() != "event list")
            {
                return(ReturnCode.CORRUPTED_FILE);
            }
            if (tokens[1].ToLower() != "version")
            {
                return(ReturnCode.CORRUPTED_FILE);
            }
            int version;

            if (!int.TryParse(tokens[2], out version))
            {
                return(ReturnCode.CORRUPTED_FILE);
            }
            Version = version;

            // Read the column headers
            int eventStartCol = 0;
            int eventEndCol   = 1;
            int durationCol   = 2;
            int maxValCol     = 3;
            int maxTimeCol    = 4;
            int commentsCol   = 5;
            int nColumns      = 5;

            tokens = lines[1].Split(',');
            for (int col = 0; col < tokens.Length; col++)
            {
                switch (tokens[col].ToLower())
                {
                case "event start":
                    eventStartCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;

                case "event end":
                    eventEndCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;

                case "duration":
                    durationCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;

                case "max value":
                    maxValCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;

                case "max time":
                    maxTimeCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;

                case "comments":
                    commentsCol = col;
                    if (col > nColumns)
                    {
                        nColumns = col;
                    }
                    break;
                }
            }
            nColumns++;

            // Read event content
            DateTime start;
            DateTime end;

            for (int l = 2; l < lines.Length; ++l)
            {
                tokens = lines[l].Split(',');
                if (tokens.Length < nColumns)
                {
                    return(ReturnCode.CORRUPTED_FILE);
                }
                start = DateTime.Parse(tokens[eventStartCol]);
                end   = DateTime.Parse(tokens[eventEndCol]);
                StartTime.Add(start);
                EndTime.Add(end);
                MaxValue.Add(double.Parse(tokens[maxValCol]));
                MaxTime.Add(DateTime.Parse(tokens[maxTimeCol]));
                Comments.Add(tokens[commentsCol]);
            }

            return(ReturnCode.SUCCESS);
        }
예제 #3
0
        //Haalt de data (verlofaanvraag) op uit de View, geeft het door aan de controller
        public VacationRequest ToVacationRequest(VacationRequest vacreq = null)
        {
            if (vacreq == null)
            {
                vacreq                 = new VacationRequest();
                vacreq.UserID          = SecurityHelper.GetUserId();
                vacreq.ReasonRejection = "";
                vacreq.DateSubmission  = DateTime.Now;
                vacreq.IsRejected      = false;
                vacreq.IsApproved      = false;
                vacreq.IsInTreatment   = true;
                vacreq.IsActive        = true;
                vacreq.DateCreated     = DateTime.Now;
                vacreq.DateChanged     = DateTime.Now;
                vacreq.CreateUser      = SecurityHelper.GetUserId();
                vacreq.ChangeUser      = SecurityHelper.GetUserId();
                vacreq.IsTotalDays     = CompleteDays;
            }

            //Wanneer de checkbox "hele dagen" is aangevinkt, wordt er uitgegaan van 8 uur verlof per opgegeven dag. De begintijd en eindtijd wordt vastgezet
            if (CompleteDays == true)
            {
                TimeSpan BeginTime = new TimeSpan(9, 00, 0);

                vacreq.BeginDate = BeginDate.Add(BeginTime);


                TimeSpan EndTime = new TimeSpan(17, 00, 0);

                vacreq.EndDate    = EndDate.Add(EndTime);
                vacreq.BeginOfDay = BeginDate;
                vacreq.EndOfDay   = EndDate;
            }

            //De tijd wordt toegevoegd aan de datetime die zal worden opgeslagen
            else
            {
                BeginDate        = BeginDate.Add(BeginTime);
                vacreq.BeginDate = BeginDate;

                EndDate        = EndDate.Add(EndTime);
                vacreq.EndDate = EndDate;

                vacreq.BeginOfDay = BeginDate.Date.Add(UserBeginTime);
                vacreq.EndOfDay   = EndDate.Date.Add(UserEndTime);
            }

            //Verschil in dagen wordt berekend
            TimeSpan DifferenceDayInHours = UserEndTime - UserBeginTime;

            if (DifferenceDayInHours.TotalMinutes > 480)
            {
                int minutesoverload = (DifferenceDayInHours.Minutes % 480) * -1;
                UserEndTime = UserEndTime.Add(new TimeSpan(0, minutesoverload, 0));
            }
            TimeSpan differencehours = EndTime - BeginTime;

            if (differencehours.TotalMinutes > 480)
            {
                int minutesoverload = (differencehours.Minutes % 480) * -1;
                EndTime = EndTime.Add(new TimeSpan(0, minutesoverload, 0));
            }
            TimeSpan DifferenceInDays = EndDate - BeginDate;
            int      TotalDays        = DifferenceInDays.Days;

            if (DifferenceInDays.Hours == 8)
            {
                TotalDays = TotalDays + 1;
            }

            if (CompleteDays == true)
            {
                TotalDays = TotalDays + 1;
            }

            //Het totaal aantal minuten in de verlofaanvraag worden berekend (als checkbox "hele dagen" is aangevinkt).
            if (CompleteDays == true)
            {
                int      CountHours = 0;
                DateTime t          = BeginDate;
                for (int i = 1; i <= TotalDays; i++)
                {
                    if (t.DayOfWeek == DayOfWeek.Monday || t.DayOfWeek == DayOfWeek.Tuesday || t.DayOfWeek == DayOfWeek.Wednesday || t.DayOfWeek == DayOfWeek.Thursday || t.DayOfWeek == DayOfWeek.Friday)
                    {
                        CountHours = CountHours + 8;
                    }

                    if (t.DayOfWeek == DayOfWeek.Saturday || t.DayOfWeek == DayOfWeek.Sunday)
                    {
                        CountHours = CountHours + 0;
                    }
                    t = t.AddDays(1);
                }
                int TotalMinutes = CountHours * 60;
                vacreq.TotalMinutes = TotalMinutes;
            }

            if (CompleteDays == false)
            {
                DifferenceInDays = EndDate.Date - BeginDate.Date;


                if (DifferenceInDays.Days < 1)
                {
                    int DifferenceHours   = 0;
                    int DifferenceMinutes = 0;

                    if (BeginTime < EndTime)
                    {
                        DifferenceHours = EndTime.Hours - BeginTime.Hours;

                        if (EndTime.Minutes == BeginTime.Minutes)
                        {
                            DifferenceMinutes = 0;
                        }

                        if (BeginTime.Minutes < EndTime.Minutes)
                        {
                            DifferenceMinutes = EndTime.Minutes - BeginTime.Minutes;
                        }

                        if (BeginTime.Minutes > EndTime.Minutes)
                        {
                            if (EndTime.Minutes == 0)
                            {
                                DifferenceMinutes = 60 - BeginTime.Minutes;
                                DifferenceHours   = DifferenceHours - 1;
                            }

                            if (BeginTime.Minutes > EndTime.Minutes && EndTime.Minutes != 0)
                            {
                                DifferenceMinutes = 60 - (BeginTime.Minutes - EndTime.Minutes);
                                DifferenceHours   = DifferenceHours - 1;
                            }
                        }


                        vacreq.TotalMinutes = (DifferenceHours * 60) + DifferenceMinutes;
                    }

                    if (vacreq.TotalMinutes > 480)
                    {
                        vacreq.TotalMinutes = 480;
                    }
                }

                if (DifferenceInDays.Days >= 1 && DifferenceInDays.Days < 2)
                {
                    int DifferenceHours   = 0;
                    int DifferenceMinutes = 0;
                    int MinutesFirstDay   = 0;
                    int MinutesSecondDay  = 0;

                    DifferenceHours = (UserEndTime.Hours - BeginTime.Hours) + (EndTime.Hours - UserBeginTime.Hours);

                    if (UserEndTime.Minutes == BeginTime.Minutes)
                    {
                        MinutesFirstDay = 0;
                    }

                    if (UserEndTime.Minutes > BeginTime.Minutes)
                    {
                        MinutesFirstDay = (UserEndTime.Minutes - BeginTime.Minutes);
                    }

                    if (UserEndTime.Minutes < BeginTime.Minutes)
                    {
                        if (UserEndTime.Minutes == 0)
                        {
                            MinutesFirstDay = 60 - BeginTime.Minutes;
                            DifferenceHours = DifferenceHours - 1;
                        }

                        if (UserEndTime.Minutes != 0)
                        {
                            MinutesFirstDay = 60 - (BeginTime.Minutes - UserEndTime.Minutes);
                            DifferenceHours = DifferenceHours - 1;
                        }
                    }

                    if (EndTime.Minutes == UserBeginTime.Minutes)
                    {
                        MinutesSecondDay = 0;
                    }

                    if (EndTime.Minutes > UserBeginTime.Minutes)
                    {
                        MinutesSecondDay = (EndTime.Minutes - UserBeginTime.Minutes);
                    }

                    if (EndTime.Minutes < UserBeginTime.Minutes)
                    {
                        if (EndTime.Minutes == 0)
                        {
                            MinutesSecondDay = 60 - UserBeginTime.Minutes;
                            DifferenceHours  = DifferenceHours - 1;
                        }

                        if (EndTime.Minutes != 0)
                        {
                            MinutesSecondDay = 60 - (UserBeginTime.Minutes - EndTime.Minutes);
                            DifferenceHours  = DifferenceHours - 1;
                        }
                    }

                    DifferenceMinutes = MinutesFirstDay + MinutesSecondDay;
                    if (DifferenceMinutes > 59)
                    {
                        DifferenceHours   = DifferenceHours + 1;
                        DifferenceMinutes = DifferenceMinutes - 60;
                    }

                    vacreq.TotalMinutes = (DifferenceHours * 60) + DifferenceMinutes;
                }

                if (DifferenceInDays.Days >= 2)
                {
                    int      totaldaysbetween = 0;
                    DateTime startDate        = BeginDate;
                    for (int i = 1; i <= DifferenceInDays.Days; i++)
                    {
                        if (startDate.DayOfWeek == DayOfWeek.Monday || startDate.DayOfWeek == DayOfWeek.Tuesday || startDate.DayOfWeek == DayOfWeek.Wednesday || startDate.DayOfWeek == DayOfWeek.Thursday || startDate.DayOfWeek == DayOfWeek.Friday)
                        {
                            totaldaysbetween = totaldaysbetween + 1;
                        }

                        startDate = startDate.AddDays(1);
                    }

                    totaldaysbetween = totaldaysbetween - 1;


                    int DifferenceHours   = 0;
                    int DifferenceMinutes = 0;
                    int MinutesFirstDay   = 0;
                    int MinutesSecondDay  = 0;

                    DifferenceHours = (UserEndTime.Hours - BeginTime.Hours) + (EndTime.Hours - UserBeginTime.Hours);

                    if (UserEndTime.Minutes == BeginTime.Minutes)
                    {
                        MinutesFirstDay = 0;
                    }

                    if (UserEndTime.Minutes > BeginTime.Minutes)
                    {
                        MinutesFirstDay = (UserEndTime.Minutes - BeginTime.Minutes);
                    }

                    if (UserEndTime.Minutes < BeginTime.Minutes)
                    {
                        if (UserEndTime.Minutes == 0)
                        {
                            MinutesFirstDay = 60 - BeginTime.Minutes;
                            DifferenceHours = DifferenceHours - 1;
                        }

                        if (UserEndTime.Minutes != 0)
                        {
                            MinutesFirstDay = 60 - (BeginTime.Minutes - UserEndTime.Minutes);
                            DifferenceHours = DifferenceHours - 1;
                        }
                    }

                    if (EndTime.Minutes == UserBeginTime.Minutes)
                    {
                        MinutesSecondDay = 0;
                    }

                    if (EndTime.Minutes > UserBeginTime.Minutes)
                    {
                        MinutesSecondDay = (EndTime.Minutes - UserBeginTime.Minutes);
                    }

                    if (EndTime.Minutes < UserBeginTime.Minutes)
                    {
                        if (EndTime.Minutes == 0)
                        {
                            MinutesSecondDay = 60 - UserBeginTime.Minutes;
                            DifferenceHours  = DifferenceHours - 1;
                        }

                        if (EndTime.Minutes != 0)
                        {
                            MinutesSecondDay = 60 - (UserBeginTime.Minutes - EndTime.Minutes);
                            DifferenceHours  = DifferenceHours - 1;
                        }
                    }

                    DifferenceMinutes = MinutesFirstDay + MinutesSecondDay;
                    if (DifferenceMinutes > 59)
                    {
                        DifferenceHours   = DifferenceHours + 1;
                        DifferenceMinutes = DifferenceMinutes - 60;
                    }

                    var      totalhoursindays       = DifferenceHours;
                    TimeSpan DifferenceBeginEndTime = (new TimeSpan(vacreq.EndOfDay.Value.Hour, vacreq.EndOfDay.Value.Minute, 00)) - (new TimeSpan(vacreq.BeginOfDay.Value.Hour, vacreq.BeginOfDay.Value.Minute, 00));
                    if (DifferenceBeginEndTime.TotalMinutes > 480)
                    {
                        var minutesoverload = (DifferenceBeginEndTime.TotalMinutes % 480) * -1;
                        DifferenceBeginEndTime = DifferenceBeginEndTime.Add(new TimeSpan(0, Convert.ToInt32(minutesoverload), 0));
                    }

                    vacreq.TotalMinutes = (totalhoursindays * 60) + DifferenceMinutes + (Convert.ToInt32(DifferenceBeginEndTime.TotalMinutes) * totaldaysbetween);
                }
            }

            vacreq.Reason = Reason;
            if (vacreq.IsTotalDays == true)
            {
                vacreq.BeginDate = BeginDate.Add(new TimeSpan(08, 00, 00));
                vacreq.EndDate   = EndDate.Add(new TimeSpan(18, 00, 00));
            }
            vacreq.HasDeadlines   = HasDeadlines;
            vacreq.IsCommunicated = IsCommunicated;

            return(vacreq);
        }