/// <summary> /// Save to file /// </summary> public static void Save(CreateRequest createRequest) { var arrayOfPersons = XmlFileData.ReadXmlFile(); //Create new id var personId = arrayOfPersons.Persons.Count() + 1; //Get file var path = HttpContext.Current.Server.MapPath("/Content/Files/personer.xml"); XDocument doc = XDocument.Load(path); XElement root = new XElement("ArrayOfPerson"); //Add new person foreach (var person in createRequest.ListOfPersons) { doc.Root.Add( new XElement("Person", new XElement("ID", personId), new XElement("Firstname", person.FirstName), new XElement("Lastname", person.LastName), new XElement("Socialnumber", person.PersonNumber), new XElement("PersonCategory", person.PersonType) )); doc.Save(path); } }
/// <summary> /// Get list of persons /// </summary> public static PersonRegisterListData GetPersonRegisterList(SearchRequest searchRequest) { var result = new PersonRegisterListData(); //Get data var arrayOfPersons = XmlFileData.ReadXmlFile(); var personList = arrayOfPersons.Persons.Where(x => !string.IsNullOrEmpty(x.Firstname) && !string.IsNullOrEmpty(x.Lastname) && !string.IsNullOrEmpty(x.PersonCategory) && !string.IsNullOrEmpty(x.Socialnumber)); //Filter by search string in list if (!string.IsNullOrEmpty(searchRequest.SearchString)) { personList = personList.Where(x => x.Firstname.ToLower().Contains(searchRequest.SearchString.ToLower()) || x.Lastname.ToLower().Contains(searchRequest.SearchString.ToLower()) || x.PersonCategory.ToLower().Contains(searchRequest.SearchString.ToLower()) || x.Socialnumber.ToLower().Contains(searchRequest.SearchString.ToLower())).ToList(); } //Filter number of items per page var take = 0; switch (searchRequest.DisplayNumber) { case DisplayNumber.Display50: take = 50; break; case DisplayNumber.Display100: take = 100; break; default: take = 10; break; } //Number of persons found var foundPersons = personList.Count(); result.ListCount = foundPersons; //Number of pages var numberOfPages = (foundPersons + take - 1) / take; result.PageCount = numberOfPages; //Pagination var currentPage = searchRequest.PageNumber.HasValue ? searchRequest.PageNumber.Value : 1; var startPage = currentPage - 5; var endPage = currentPage + 4; if (startPage <= 0) { endPage -= (startPage - 1); startPage = 1; } if (endPage > numberOfPages) { endPage = numberOfPages; if (endPage > 10) { startPage = endPage - 9; } } result.CurrentPage = currentPage; result.FirstPage = startPage; result.LastPage = endPage; //Return list var skip = (currentPage - 1) * take; result.Persons = personList.Skip(skip).Take(take).ToList(); return(result); }