using System;
using System.Collections.Generic;
using System.Data;
using Yap.Data.Client;
namespace Yap.Data.UnitTest
{
public class RecordPersonRepository : IPersonRepository
{
public IList<Person> FindAll()
{
var persons = new List<Person>();
var reader = new RecordReaderCommand(@"
SELECT
Id,
FirstName,
LastName,
Email,
Login,
Password,
Question,
Answer
FROM
Person",
delegate(RecordReaderArguments args)
{
IRecord record = args.Record;
persons.Add(
new Person
{
Id = (Guid)record["Id"],
FirstName = (String)record["FirstName"],
LastName = (String)record["LastName"],
Email = (String)record["Email"],
Login = (String)record["Login"],
Password = (String)record["Password"],
Question = (String)record["Question"],
Answer = (String)record["Answer"]
});
args.Terminate = false;
});
reader.Execute();
return persons;
}
public Person FindOne(Guid id)
{
Person person = null;
var reader = new RecordReaderCommand(@"
SELECT
Id,
FirstName,
LastName,
Email,
Login,
Password,
Question,
Answer
FROM
Person
WHERE
Id = @Id",
delegate(RecordReaderArguments args)
{
IRecord record = args.Record;
person = new Person
{
Id = (Guid)record["Id"],
FirstName = (String)record["FirstName"],
LastName = (String)record["LastName"],
Email = (String)record["Email"],
Login = (String)record["Login"],
Password = (String)record["Password"],
Question = (String)record["Question"],
Answer = (String)record["Answer"]
};
args.Terminate = true;
});
reader.Parameters.Add("Id", id);
reader.Execute();
return person;
}
public void Insert(Person person)
{
var insert = new ScriptCommand(@"
SET @Id = newid()
INSERT INTO
Person
(
Id,
FirstName,
LastName,
Email,
Login,
Password,
Question,
Answer
)
VALUES
(
@Id,
@FirstName,
@LastName,
@Email,
@Login,
@Password,
@Question,
@Answer
)");
insert.Parameters.Add("Id", null, typeof(Guid), ParameterDirection.Output);
insert.Parameters.Add("FirstName", person.FirstName);
insert.Parameters.Add("LastName", person.LastName);
insert.Parameters.Add("Email", person.Email);
insert.Parameters.Add("Login", person.Login);
insert.Parameters.Add("Password", person.Password);
insert.Parameters.Add("Question", person.Question);
insert.Parameters.Add("Answer", person.Answer);
insert.Execute();
person.Id = (Guid)insert.Parameters["Id"].Value;
}
public void Update(Person person)
{
var update = new ScriptCommand(@"
UPDATE
Person
SET
FirstName = @FirstName,
LastName = @LastName,
Email = @Email,
Login = @Login,
Password = @Password,
Question = @Question,
Answer = @Answer
WHERE
Id = @Id");
update.Parameters.Add("Id", person.Id);
update.Parameters.Add("FirstName", person.FirstName);
update.Parameters.Add("LastName", person.LastName);
update.Parameters.Add("Email", person.Email);
update.Parameters.Add("Login", person.Login);
update.Parameters.Add("Password", person.Password);
update.Parameters.Add("Question", person.Question);
update.Parameters.Add("Answer", person.Answer);
update.Execute();
}
public void Delete(Person person)
{
var delete = new ScriptCommand(@"
DELETE FROM
Person
WHERE
Id = @Id");
delete.Parameters.Add("Id", person.Id);
delete.Execute();
}
}
}