public void Can_GetById()
        {
            Models.Data.EmployeeCost costData;
            var id      = Guid.NewGuid();
            var details = new List <Models.Data.EmployeeCostDetail>();

            using (var conn = factory.OpenDbConnection())
            {
                costData = new Models.Data.EmployeeCost
                {
                    Id    = id,
                    Date  = DateTime.Today,
                    Total = 100000
                };

                conn.InsertParam(costData);


                for (int i = 0; i < 2; i++)
                {
                    var employee = new Employee
                    {
                        Active = true,
                        Id     = Guid.NewGuid(),
                        Name   = "Employee-" + i,
                        Salary = 50000
                    };

                    conn.InsertParam(employee);

                    var detail = new Models.Data.EmployeeCostDetail();
                    detail.CostId      = id;
                    detail.Description = "Desc" + i;
                    detail.Present     = true;
                    detail.Salary      = 50000;
                    detail.EmployeeId  = employee.Id;

                    conn.InsertParam(detail);
                    details.Add(detail);
                }
            }

            var cost = service.Get(id);

            Compare(costData, details, cost);
        }
        public void Can_GetByDate()
        {
            Models.Data.EmployeeCost costData = null;
            var details = new List<Models.Data.EmployeeCostDetail>();
            DateTime today = DateTime.Today;

            using (var conn = factory.OpenDbConnection())
            {
                Guid dataId = Guid.NewGuid();

                costData = new Models.Data.EmployeeCost
                {
                    Id = dataId,
                    Date = today,
                    Total = 100000
                };

                conn.InsertParam(costData);

                for (int i = 0; i < 2; i++)
                {
                    var employee = new Employee
                    {
                        Active = true,
                        Id = Guid.NewGuid(),
                        Name = "Employee-" + i,
                        Salary = 50000
                    };

                    conn.InsertParam(employee);

                    var detail = new Models.Data.EmployeeCostDetail();
                    detail.CostId = dataId;
                    detail.Description = "Desc" + i;
                    detail.Present = true;
                    detail.Salary = 50000;
                    detail.EmployeeId = employee.Id;

                    conn.InsertParam(detail);
                    details.Add(detail);
                }

                var cost = service.GetByDate(today);
                Compare(costData, details, cost);
            }
        }
        public void Can_SaveExistingCost()
        {
            var employee = new Employee
            {
                Active = true,
                Id = Guid.NewGuid(),
                Name = "Employee #1",
                Salary = 50000
            };

            Guid id = Guid.NewGuid();

            Models.Data.EmployeeCost costData = null;
            Models.Data.EmployeeCostDetail costDetail = null;

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(employee);

                costData = new Models.Data.EmployeeCost
                {
                    Id =id,
                    Date = DateTime.Today,
                    Total = 1000
                };

                conn.InsertParam(costData);

                costDetail = new Models.Data.EmployeeCostDetail
                    {
                        CostId = id,
                        EmployeeId = employee.Id,
                        Description = "desc",
                        Present = true,
                        Salary = 1000
                    };

                conn.InsertParam(costDetail);
            }

            var model = new Models.EmployeeCost
                {
                    Id = id,
                    Date = DateTime.Today.AddDays(1),
                    Total = 10000,
                    Details = new List<EmployeeCostDetail>
                        {
                            new EmployeeCostDetail
                                {
                                    Description = "des",
                                    EmployeeId = employee.Id,
                                    Present = false,
                                    Salary = 10000
                                }
                        }
                };

            service.Save(model);

            using (var conn = factory.OpenDbConnection())
            {
                costData = conn.FirstOrDefault<Models.Data.EmployeeCost>(c => c.Date == model.Date);
                var details = conn.Where<Models.Data.EmployeeCostDetail>(new { CostId = costData.Id });
                Compare(costData, details, model);
            }
        }
        public void Can_SaveExistingCost()
        {
            var employee = new Employee
            {
                Active = true,
                Id     = Guid.NewGuid(),
                Name   = "Employee #1",
                Salary = 50000
            };

            Guid id = Guid.NewGuid();

            Models.Data.EmployeeCost       costData   = null;
            Models.Data.EmployeeCostDetail costDetail = null;

            using (var conn = factory.OpenDbConnection())
            {
                conn.InsertParam(employee);

                costData = new Models.Data.EmployeeCost
                {
                    Id    = id,
                    Date  = DateTime.Today,
                    Total = 1000
                };

                conn.InsertParam(costData);

                costDetail = new Models.Data.EmployeeCostDetail
                {
                    CostId      = id,
                    EmployeeId  = employee.Id,
                    Description = "desc",
                    Present     = true,
                    Salary      = 1000
                };

                conn.InsertParam(costDetail);
            }

            var model = new Models.EmployeeCost
            {
                Id      = id,
                Date    = DateTime.Today.AddDays(1),
                Total   = 10000,
                Details = new List <EmployeeCostDetail>
                {
                    new EmployeeCostDetail
                    {
                        Description = "des",
                        EmployeeId  = employee.Id,
                        Present     = false,
                        Salary      = 10000
                    }
                }
            };

            service.Save(model);

            using (var conn = factory.OpenDbConnection())
            {
                costData = conn.FirstOrDefault <Models.Data.EmployeeCost>(c => c.Date == model.Date);
                var details = conn.Where <Models.Data.EmployeeCostDetail>(new { CostId = costData.Id });
                Compare(costData, details, model);
            }
        }