Пример #1
0
        public bool GetHoursXML(IStaffDirectory sd, NameValueCollection formData)
        {
            int errors = 0;

            StaffTimeInfoCollection staffTime = new StaffTimeInfoCollection(sd.HoursXML);

            WorkHoursPart[] parts = { WorkHoursPart.MorningStart, WorkHoursPart.MorningEnd, WorkHoursPart.AfternoonStart, WorkHoursPart.AfternoonEnd };

            foreach (var timeInfo in staffTime)
            {
                string chkName = string.Format("{0}Checked", timeInfo.WorkHoursDayName());
                timeInfo.Value.Checked = formData[chkName] == "on";

                foreach (WorkHoursPart part in parts)
                {
                    string txtName = timeInfo.WorkHoursTimeTextBoxName(part);

                    string val = formData[txtName];

                    if (timeInfo.Value.Checked && string.IsNullOrEmpty(val))
                    {
                        AppendAlert(string.Format("Missing time for {0}: {1}", timeInfo.WorkHoursDayName(), GetWorkHoursPartText(part)));
                        errors++;
                    }
                    else
                    {
                        timeInfo.SetValue(val, part);
                    }
                }
            }

            sd.HoursXML = staffTime.ToXML().OuterXml;

            return(true);
        }
Пример #2
0
        public string GetWorkHoursTime(DayOfWeek day, WorkHoursPart part)
        {
            if (staffTime == null)
            {
                StaffDirectory sd = DA.Current.Single <StaffDirectory>(StaffDirectoryID);

                if (sd == null)
                {
                    throw new StaffDirectoryNotFoundException(StaffDirectoryID);
                }

                staffTime = new StaffTimeInfoCollection(sd.HoursXML);
            }

            StaffTimeInfo  timeInfo  = staffTime[day];
            StaffTimeValue timeValue = null;

            switch (part)
            {
            case WorkHoursPart.MorningStart:
                timeValue = timeInfo.AM.Start;
                break;

            case WorkHoursPart.MorningEnd:
                timeValue = timeInfo.AM.End;
                break;

            case WorkHoursPart.AfternoonStart:
                timeValue = timeInfo.PM.Start;
                break;

            case WorkHoursPart.AfternoonEnd:
                timeValue = timeInfo.PM.End;
                break;

            default:
                throw new ArgumentException("part");
            }

            return(timeValue.Value.ToString());
        }
Пример #3
0
        public StaffTimeInfoCollection GetStaffTime()
        {
            if (staffTime == null)
            {
                if (StaffDirectoryID == 0)
                {
                    staffTime = new StaffTimeInfoCollection();
                }
                else
                {
                    StaffDirectory sd = DA.Current.Single <StaffDirectory>(StaffDirectoryID);

                    if (sd == null)
                    {
                        throw new StaffDirectoryNotFoundException(StaffDirectoryID);
                    }

                    staffTime = new StaffTimeInfoCollection(sd.HoursXML);
                }
            }

            return(staffTime);
        }
Пример #4
0
                public static Feed CreateFeed(FeedFormats format, string userName)
                {
                    switch (format)
                    {
                    case FeedFormats.Calendar:
                        DataTable dt = FeedGenerator.InitCalendarTable();
                        Dictionary <string, object> search_params = new Dictionary <string, object>();
                        IStaffDirectory             sd            = null;
                        if (!string.IsNullOrEmpty(userName))
                        {
                            sd = ServiceProvider.Current.Data.Client.GetStaffDirectory(userName);
                        }
                        if (sd != null)
                        {
                            DateTime[] week = WeekArray(sd.LastUpdate);
                            StaffTimeInfoCollection staffTime = new StaffTimeInfoCollection(sd.HoursXML);
                            IClient c = ServiceProvider.Current.Data.Client.GetClient(sd.ClientID);
                            _ = new StaffDirectoryEntry()
                            {
                                StaffDirectoryID = sd.StaffDirectoryID,
                                ClientID         = sd.ClientID,
                                UserName         = c.UserName,
                                Privs            = c.Privs,
                                LName            = c.LName,
                                MName            = c.MName,
                                FName            = c.FName,
                                Hours            = staffTime.ToString(),
                                Email            = c.Email,
                                Phone            = c.Phone,
                                Office           = sd.Office,
                                Deleted          = sd.Deleted,
                                ReadOnly         = true
                            };

                            foreach (KeyValuePair <DayOfWeek, StaffTimeInfo> kvp in staffTime)
                            {
                                if (kvp.Value.Checked)
                                {
                                    DataRow  dr         = dt.NewRow();
                                    DateTime dtstart    = week[(int)kvp.Key].Add(kvp.Value.AM.Start.Value.Value);
                                    DateTime dtend      = week[(int)kvp.Key].Add(kvp.Value.PM.End.Value.Value);
                                    DateTime lunchStart = week[(int)kvp.Key].Add(kvp.Value.AM.End.Value.Value);
                                    DateTime lunchEnd   = week[(int)kvp.Key].Add(kvp.Value.PM.Start.Value.Value);
                                    dr["DTSTART"]       = ";TZID=America/New_York:" + dtstart.ToString("yyyyMMddTHHmmss");
                                    dr["DTEND"]         = ";TZID=America/New_York:" + dtend.ToString("yyyyMMddTHHmmss");
                                    dr["RRULE"]         = ":FREQ=WEEKLY;BYDAY=" + DayCode(kvp.Key);
                                    dr["DTSTAMP"]       = ":" + DateTime.Now.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
                                    dr["UID"]           = ":staffdirectory_" + sd.StaffDirectoryID.ToString();
                                    dr["CREATED"]       = ":" + sd.LastUpdate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
                                    dr["LAST-MODIFIED"] = ":" + sd.LastUpdate.ToUniversalTime().ToString("yyyyMMddTHHmmssZ");
                                    dr["STATUS"]        = ":CONFIRMED";
                                    dr["SUMMARY"]       = ":" + sd.LName + " " + TimeRangeToString(dtstart, dtend);
                                    dr["DESCRIPTION"]   = ":Lunch: " + TimeRangeToString(lunchStart, lunchEnd);
                                    //BEGIN:VEVENT
                                    //DTSTART;TZID=America/New_York:20120914T080000
                                    //DTEND;TZID=America/New_York:20120914T170000
                                    //RRULE:FREQ=WEEKLY;BYDAY=FR
                                    //DTSTAMP:20120911T212356Z
                                    //UID:[email protected]
                                    //CREATED:20120911T212251Z
                                    //LAST-MODIFIED:20120911T212251Z
                                    //STATUS:CONFIRMED
                                    //SUMMARY:Getty\, James 8am - 5pm
                                    //DESCRIPTION:Lunch: 12pm - 12:30pm
                                    //SEQUENCE:0
                                    //END:VEVENT
                                    //dr["DTSTART"] = week[(int)kvp.Key].Add(kvp.Value.AM.Start.Value.Value).ToUniversalTime().ToString("yyyyMMdd'T'HHmmss'Z'");
                                    //dr["DTEND"] = week[(int)kvp.Key].Add(kvp.Value.PM.End.Value.Value).ToUniversalTime().ToString("yyyyMMdd'T'HHmmss'Z'");
                                    //dr["UID"] = sd.StaffDirectoryID;
                                    //dr["CREATED"] = DateTime.Now.ToUniversalTime().ToString("yyyyMMdd'T'HHmmss'Z'");
                                    //dr["LAST-MODIFIED"] = DateTime.Now.ToUniversalTime().ToString("yyyyMMdd'T'HHmmss'Z'");
                                    //dr["STATUS"] = "CONFIRMED";
                                    //dr["SUMMARY"] = string.Format("{0} | {1} ({2})", item.ResourceName, item.DisplayName, item.Email);
                                    //dr["DESCRIPTION"] = string.Format(
                                    //    "Activity: {0}\\nStatus: {1}\\nScheduled Start: {2}\\nScheduled End: {3}\\nActual Start: {4}\\nActual End: {5}",
                                    //    item.ActivityName, GetReservationStatus(item), GetDateTime(item.BeginDateTime), GetDateTime(item.EndDateTime), GetDateTime(item.ActualBeginDateTime), GetDateTime(item.ActualEndDateTime)
                                    //);
                                    dt.Rows.Add(dr);
                                }
                            }
                        }
                        return(new Feed(format, dt));

                    default:
                        throw new NotImplementedException("Feed format has not been implemented.");
                    }
                }
Пример #5
0
        public string GetWorkingHoursText(IStaffDirectory sd)
        {
            StaffTimeInfoCollection result = new StaffTimeInfoCollection(sd.HoursXML);

            return(result.ToString());
        }