using SwaggerStudy.Models;

using System;
using System.Collections.Generic;
using System.Linq;

namespace SwaggerStudy.Services
{
    public class StudentServer
    {
        public static List<Student> AllStudent = Ini();

        public List<Student> GetAll()
        {
            return StudentServer.AllStudent;
        }

        public Student Get(int studentId)
        {
            return StudentServer.AllStudent.FirstOrDefault(s => s.Id == studentId);
        }

        public Student Get(string studentName)
        {
             return StudentServer.AllStudent.FirstOrDefault(s => s.Name == studentName);
        }

        public bool Add(Student student)
        {
            var nextId = StudentServer.AllStudent.Count() + 1;
            student.Id = nextId;

            StudentServer.AllStudent.Add(student);
            return true;
        }

        public bool Update(Student student)
        {
            var query = StudentServer.AllStudent.FirstOrDefault(s => s.Id == student.Id);
            if (query==null)
            {
                return false;
            }

            query.Name = student.Name;
            query.Age = student.Age;
            query.Gender = student.Gender;
            query.Address = student.Address;
            query.School = student.School;

            return true;
        }

        public bool Delete(int studentId)
        {
            var query = StudentServer.AllStudent.FirstOrDefault(s => s.Id == studentId);
            if (query == null)
            {
                return false;
            }
            else
            {
                StudentServer.AllStudent.Remove(query);

                return true;
            }
        }

        private static List<Student> Ini()
        {
            return new List<Student>()
            { 
                new Student()
                { 
                    Id=1,
                    Name="乔峰",
                    Age=25,
                    Address="少室山",
                    Gender=GenderEnum.Male,
                    School="丐帮",
                },
                new Student()
                {
                    Id=2,
                    Name="虚竹",
                    Age=24,
                    Address="少林寺",
                    Gender=GenderEnum.Male,
                    School="逍遥派",
                },
                new Student()
                {
                    Id=3,
                    Name="段誉",
                    Age=22,
                    Address="大理",
                    Gender=GenderEnum.Male,
                    School="无量山琅环福地",
                },
                new Student()
                {
                    Id=4,
                    Name="阿朱",
                    Age=19,
                    Address="听香水榭",
                    Gender=GenderEnum.Female,
                    School="无",
                },
                new Student()
                {
                    Id=5,
                    Name="阿紫",
                    Age=18,
                    Address="春秋门",
                    Gender=GenderEnum.Female,
                    School="星宿派",
                },
                new Student()
                {
                    Id=6,
                    Name="王语嫣",
                    Age=17,
                    Address="曼陀山庄",
                    Gender=GenderEnum.Female,
                    School="武学理论家",
                }
            };
        }
    }
}