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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <summary>
        /// manual tester serialize
        /// </summary>
        /// <param name="tester"></param>
        public void AddTester(Tester tester)
        {
            XElement        ID                 = new XElement("id", tester.ID);
            XElement        FirstName          = new XElement("firstName", tester.Name.first);
            XElement        LastName           = new XElement("lastName", tester.Name.last);
            XElement        Name               = new XElement("name", LastName, FirstName);
            XElement        Street             = new XElement("street", tester.Address.street);
            XElement        BuildingNumber     = new XElement("bldNumber", tester.Address.buildingNumber);
            XElement        City               = new XElement("City", tester.Address.city);
            XElement        Address            = new XElement("Address", BuildingNumber, Street, City);
            XElement        phone              = new XElement("Phone", tester.PhoneNumber);
            XElement        email              = new XElement("Email", tester.Email);
            XElement        BirthDay           = new XElement("BirthDay", tester.BirthDay);
            XElement        sex                = new XElement("Gender", tester.Sex);
            XElement        CheckEmail         = new XElement("CheckEmail", tester.CheckEmail);
            XElement        AwaitingAdminReset = new XElement("AwaitingAdminReset", tester.AwaitingAdminReset);
            XElement        firstLogin         = new XElement("FirstLogin", tester.FirstLogIn);
            XElement        testingCarType     = new XElement("VehicleType", tester.testingCarType);
            XElement        MaxDistance        = new XElement("MaxDistance", tester.MaxDistance);
            XElement        ExpYears           = new XElement("ExpYears", tester.ExpYears);
            XElement        MaxWeeklyTests     = new XElement("MaxWeeklyTests", tester.MaxWeeklyTests);
            List <XElement> Days               = new List <XElement>();

            foreach (var item in tester.schedule.week)
            {
                string HourString = "";
                for (int i = 9; i < 15; i++)
                {
                    if (item.Value[i])
                    {
                        HourString += i.ToString() + ",";
                    }
                }
                if (HourString.Length > 0)
                {
                    HourString = HourString.Substring(0, HourString.Length - 1);
                }
                Days.Add(new XElement(item.Key.ToString(), HourString));
            }
            List <XElement> Notifications = new List <XElement>();

            foreach (var item in tester.notifications)
            {
                XElement Icon    = new XElement("Icon", item.Icon);
                XElement Time    = new XElement("Time", item.time);
                XElement Message = new XElement("Message", item.message);
                Notifications.Add(new XElement("Notification", Icon, Message, Time));
            }
            XElement Schedule = new XElement("Schedule", Days);
            XElement Tester   = new XElement("Tester", ID, Name, sex, phone, email,
                                             BirthDay, Address, CheckEmail, AwaitingAdminReset, firstLogin, testingCarType, MaxDistance,
                                             ExpYears, MaxWeeklyTests, Schedule, new XElement("Notifications", Notifications));

            TesterRoot.Add(Tester);
            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);
        }
Example #9
0
 /// <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());
 }
Example #10
0
        /// <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);
        }