void IDL.updateTester(int id, Tester updatedTester, bool[,] updatedSchedule)
        {
            XElement testerElement = (from item in TesterRoot.Elements()
                                      where int.Parse(item.Element("ID").Value) == id
                                      select item).FirstOrDefault();

            if (testerElement == null)
            {
                throw new TestersIdNotFoundException(id);
            }
            testerElement.Remove();
            TesterRoot.Add(updatedTester.ToXmlTester());
            TesterRoot.Save(TesterPath);

            XElement scheduleXelement =
                ScheduleRoot.Elements()
                .Where(item => item.Element("ID").Value == id.ToString())
                .FirstOrDefault();

            if (scheduleXelement != null)
            {
                scheduleXelement.Remove();
            }

            XElement testersId = new XElement("ID", id.ToString());

            ScheduleRoot.Add(new XElement("TesterSchedule", testersId, updatedSchedule.ToXmlSchedule()));
            ScheduleRoot.Save(SchedulePath);
        }
        List <Tester> IDL.getTesterList()
        {
            List <Tester> testersList = (from XElement testerElement in TesterRoot.Elements()
                                         select testerElement.XmlToDOTester()).ToList();

            return(testersList);
        }
예제 #3
0
파일: XMLHandler.cs 프로젝트: AviK311/WPF
        /// <summary>
        /// remove tester from the root
        /// </summary>
        /// <param name="id"></param>
        public void RemoveTester(string id)
        {
            var toRemove = (from tester in TesterRoot.Elements()
                            where tester.Element("id").Value == id
                            select tester).FirstOrDefault();

            toRemove.Remove();
            TesterRoot.Save(TesterPath);
        }
        List <Tester> IDL.getCertainTestersList(Predicate <Tester> pred)
        {
            List <Tester> testerList = (from XElement testerElement in TesterRoot.Elements()
                                        select testerElement.XmlToDOTester()).ToList();
            List <Tester> certainTestersList = (from Tester tester in testerList
                                                where pred(tester)
                                                select tester).ToList();

            return(certainTestersList);
        }
        Tester IDL.getTester(int id)
        {
            XElement foundTester = (from XElement testerElement in TesterRoot.Elements()
                                    where testerElement.Element("ID").Value.Equals(id.ToString())
                                    select testerElement).FirstOrDefault();

            if (foundTester == null)
            {
                throw new TestersIdNotFoundException(id);
            }
            return(foundTester.XmlToDOTester());
        }
        void IDL.removeTester(int id)
        {
            XElement testerElement = (from tester in TesterRoot.Elements()
                                      where int.Parse(tester.Element("ID").Value) == id
                                      select tester).FirstOrDefault();

            if (testerElement == null)
            {
                throw new TestNumberNotFoundException("thrown from: DL.Dal_XML_imp.removeTester");
            }
            testerElement.Remove();
            TesterRoot.Save(TesterPath);
        }
        void IDL.addTester(Tester tester, bool[,] schedule)
        {
            int id = (from item in TesterRoot.Elements()
                      where (int.Parse(item.Element("ID").Value) == tester.ID)
                      select(int.Parse(item.Element("ID").Value))).FirstOrDefault();

            if (id != 0)
            {
                throw new TestersIdAlreadyExistsException(tester.ID, tester.FirstName + " " + tester.LastName);
            }

            TesterRoot.Add(tester.ToXmlTester());
            TesterRoot.Save(TesterPath);

            XElement testersId = new XElement("ID", tester.ID.ToString());

            ScheduleRoot.Add(new XElement("TesterSchedule", testersId, schedule.ToXmlSchedule()));
            ScheduleRoot.Save(SchedulePath);
        }
예제 #8
0
파일: XMLHandler.cs 프로젝트: AviK311/WPF
 /// <summary>
 /// manual tester list deserialize
 /// </summary>
 /// <returns></returns>
 public List <Tester> GetTesters()
 {
     return((from tester in TesterRoot.Elements()
             where GetTester(tester.Element("id").Value) != null
             select GetTester(tester.Element("id").Value)).ToList());
 }
예제 #9
0
파일: XMLHandler.cs 프로젝트: AviK311/WPF
        /// <summary>
        /// manual tester deserialize
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Tester GetTester(string id)
        {
            Tester toReturn;

            try
            {
                toReturn = (from tester in TesterRoot.Elements()
                            where tester.Element("id").Value == id
                            select new Tester()
                {
                    ID = tester.Element("id").Value,
                    Email = tester.Element("Email").Value,
                    PhoneNumber = tester.Element("Phone").Value,
                    Name = new Name(tester.Element("name").Element("firstName").Value,
                                    tester.Element("name").Element("lastName").Value),
                    Address = new Address(tester.Element("Address").Element("City").Value,
                                          tester.Element("Address").Element("street").Value,
                                          tester.Element("Address").Element("bldNumber").Value),
                    BirthDay = DateTime.Parse(tester.Element("BirthDay").Value),
                    Sex = (from sex in (Gender[])Enum.GetValues(typeof(Gender))
                           where sex.ToString() == tester.Element("Gender").Value
                           select sex).FirstOrDefault(),
                    CheckEmail = bool.Parse(tester.Element("CheckEmail").Value),
                    AwaitingAdminReset = bool.Parse(tester.Element("AwaitingAdminReset").Value),
                    FirstLogIn = bool.Parse(tester.Element("FirstLogin").Value),
                    testingCarType = (from type in (VehicleType[])Enum.GetValues(typeof(VehicleType))
                                      where type.ToString() == tester.Element("VehicleType").Value
                                      select type).FirstOrDefault(),
                    MaxDistance = uint.Parse(tester.Element("MaxDistance").Value),
                    ExpYears = uint.Parse(tester.Element("ExpYears").Value),
                    MaxWeeklyTests = uint.Parse(tester.Element("MaxWeeklyTests").Value),
                }).FirstOrDefault();

                foreach (var item in toReturn.schedule.week)
                {
                    var DayElement  = TesterRoot.Elements().FirstOrDefault(T => T.Element("id").Value == id).Element("Schedule").Element(item.Key.ToString());
                    var stringArray = DayElement.Value.Split(',');
                    foreach (var hour in stringArray)
                    {
                        int h;
                        if (int.TryParse(hour, out h))
                        {
                            toReturn.schedule[item.Key, h] = true;
                        }
                    }
                }
                var testerElement = (from tester in TesterRoot.Elements()
                                     where tester.Element("id").Value == id
                                     select tester).FirstOrDefault();
                toReturn.notifications = (from Notification in testerElement.Elements("Notification").Elements()
                                          select new Notification
                {
                    Icon = (from icon in (MessageIcon[])Enum.GetValues(typeof(MessageIcon))
                            where icon.ToString() == Notification.Element("Icon").Value
                            select icon).FirstOrDefault(),
                    message = Notification.Element("Message").Value,
                    time = DateTime.Parse(Notification.Element("Time").Value)
                }).ToList();
            }
            catch
            {
                toReturn = null;
            }
            return(toReturn);
        }