示例#1
0
        static void Main(string[] args)
        {
            try
            {
                //IMPORTANT: Before running this, set the document folder in the DocumentService, and ensure Employees.txt is in that folder.
                Console.WriteLine("Hello World!");
                var parseService    = new ParseService();
                var documentService = new DocumentService();
                var employeeService = new EmployeeService(parseService, documentService);

                //1. Gets all paycheck data and creates a document.
                var paycheckService = new PaycheckService(employeeService, documentService);
                var paycheckData    = paycheckService.GetPaychecks();

                //2. Gets top earners and creates a document.
                var topEarners = paycheckService.GetTopEarners(paycheckData);

                //3. Gets state data and creates a document
                var medianService = new MedianService();
                var stateService  = new StateService(paycheckService, documentService, medianService);
                var stateData     = stateService.GetStateData(paycheckData);

                //4. Gets ten random employees by EmployeeId and creates a text file with the time to get each of them.
                var tenRandomEmployees = employeeService.GetTenRandomEmployeesByEmployeeId(logElapsedTime: true);

                Console.WriteLine("All done! Good-bye world!");
            }
            catch (Exception ex)
            {
                string json = JsonConvert.SerializeObject(ex);
                Console.WriteLine(json);
            }

            Console.Read();
        }
        private Paymentslip GeraContraChequeFuncionarioPobre()
        {
            var funcionario       = CriaEmployeeFakePobre();
            var funcionario_salvo = _service.Criar(funcionario);
            var servicePayCheck   = new PaycheckService(funcionario_salvo);

            return(servicePayCheck.GetContraCheque());
        }
        public void Deve_VerificarAlicotaMaxima_QuandoGerar_ContraCheque()
        {
            var funcionario       = CriaEmployeeFakePobre();
            var funcionario_salvo = _service.Criar(funcionario);

            var servicePayCheck = new PaycheckService(funcionario_salvo);
            var paycheck        = servicePayCheck.GetContraCheque();
        }
示例#4
0
        public void PaycheckService_OnWork_ThrowExceptionWhenTryValidade()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());

            // Assert
            Assert.ThrowsAsync <Exception>(() => service.CreatePaycheck(_employeeFixture.GenerateInvalidEmployee(), referenceMonth));
        }
        public void Deve_VerificarSalarioFuncionario_QuandoGerar_ContraCheque()
        {
            var funcionario       = CriaEmployeeFakePobre();
            var funcionario_salvo = _service.Criar(funcionario);

            var servicePayCheck = new PaycheckService(funcionario_salvo);
            var paycheck        = servicePayCheck.GetContraCheque();

            Assert.AreEqual(paycheck.Employee.SalarioBruto, funcionario_salvo.SalarioBruto);
        }
        public async Task <IActionResult> Show(int id)
        {
            var    chave       = id.ToString();
            string existeChave = String.Empty;

            try
            {
                existeChave = await _cacheDistribuido.GetStringAsync(chave);
            }
            catch
            {
                existeChave = String.Empty;
                // logger
            }

            Paymentslip slip;

            if (!string.IsNullOrEmpty(existeChave))
            {
                return(Ok(existeChave));
            }
            else
            {
                // busca o usuario
                var employee = funcionarioService.GetFuncionarioPorId(id);


                if (employee != null)
                {
                    // cria servico caso exista funcionario
                    var service = new PaycheckService(employee);

                    // gera contracheque
                    slip = service.GetContraCheque();

                    // adiciona obj serializado ao redis
                    try
                    {
                        var cacheSettings = new DistributedCacheEntryOptions();

                        cacheSettings.SetAbsoluteExpiration(TimeSpan.FromHours(1));
                        await _cacheDistribuido.SetStringAsync(chave, JsonConvert.SerializeObject(slip));
                    }
                    catch
                    {
                    }
                }
                else
                {
                    return(NotFound("Funcionario nao localizado"));
                }
            }
            return(Ok(slip));
        }
示例#7
0
        public void PaycheckService_OnWork_CalculateFgtsCorrectly()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());
            var paycheck       = service.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;
            var fgts           = paycheck.Payload.Entries.Find(x => x.Description == "FGTS");

            // Assert
            Assert.Equal(5000 * (8m / 100), fgts.Value);
        }
示例#8
0
        public void PaycheckService_OnWork_GenerateAValidPaycheck()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());

            // Act
            var paycheck = service.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;

            // Assert
            Assert.True(paycheck.Payload != null);
            Assert.False(paycheck.ErrorMessages.Any());
        }
        public void PaycheckValidator_OnValidade_MustPassValidation()
        {
            // Arrange
            var referenceMonth  = DateTime.Today;
            var validator       = new PaycheckValidator();
            var paycheckService = new PaycheckService(new EmployeeValidator());
            var paycheck        = paycheckService.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;

            // Act
            var result = validator.Validate(paycheck.Payload);

            // Assert
            Assert.True(result.IsValid);
            Assert.False(result.Errors.Any());
        }
示例#10
0
        public void PaycheckService_OnWork_CalculateIrpfCorrectly()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());
            var paycheck       = service.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;
            var irrf           = paycheck.Payload.Entries.Find(x => x.Description == "IRRF");
            var noIrrf         = service
                                 .CreatePaycheck(_employeeFixture.GenerateValidEmployeeNoIrrfDiscount(), referenceMonth)
                                 .Result.Payload.Entries.Find(x => x.Description == "IRRF");

            // Assert
            Assert.Equal((5000 * (27.5m / 100)) - 869.36m, irrf.Value);
            Assert.Equal(0, noIrrf.Value);
        }
示例#11
0
        public void PaycheckService_OnWork_CalculateTransportTicketCorrectly()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());
            var paycheck       = service.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;
            var tt             = paycheck.Payload.Entries.Find(x => x.Description == "Vale Transporte");
            var noTt           = service
                                 .CreatePaycheck(_employeeFixture.GenerateValidEmployeeNoOptionalDiscounts(), referenceMonth)
                                 .Result.Payload.Entries.Find(x => x.Description == "Vale Transporte");

            // Assert
            Assert.Equal(5000 * (6m / 100), tt.Value);
            Assert.Equal(0, noTt.Value);
        }
示例#12
0
        public void PaycheckService_OnWork_CalculateDentalPlanCorrectly()
        {
            // Arrange
            var referenceMonth = DateTime.Now;
            var service        = new PaycheckService(new EmployeeValidator());
            var paycheck       = service.CreatePaycheck(_employeeFixture.GenerateValidEmployee(), referenceMonth).Result;
            var dp             = paycheck.Payload.Entries.Find(x => x.Description == "Plano Dentário");
            var noDp           = service
                                 .CreatePaycheck(_employeeFixture.GenerateValidEmployeeNoOptionalDiscounts(), referenceMonth)
                                 .Result.Payload.Entries.Find(x => x.Description == "Plano Dentário");

            // Assert
            Assert.Equal(5, dp.Value);
            Assert.Equal(0, noDp.Value);
        }
        public void PaycheckHandler_OnInsertEmployee_InsertEmployeeCorrectly()
        {
            // Arrange
            var context   = new Mock <IEmployeeContext>();
            var validator = new EmployeeValidator();
            var service   = new PaycheckService(validator);
            var handler   = new Mock <PaycheckHandler>(service, context.Object, validator);
            var emp       = _employeeFixture.GenerateValidEmployeeDto();

            // Act
            var result = handler.Object.AddEmployee(emp).Result;


            // Assert
            Assert.True(Guid.TryParse(result.ToString(), out var guid));
        }
示例#14
0
 public void SetUp()
 {
     _calculationService = new Mock <ICalculationService>();
     _paycheckService    = new PaycheckService(_calculationService.Object);
 }