Ejemplo n.º 1
0
        public async Task <PagedResultDto <GetTransactionForViewDto> > GetAllTransactionForHr(GetTransactionDto input)
        {
            var project = _projectRepository.GetAllIncluding(x => x.Users).Where(x => x.Id == input.ProjectId).FirstOrDefault();
            var userIds = project.Users.Select(x => x.UserId).ToArray();

            var query = from t1 in _transactionRepository.GetAll().Where(x => userIds.Contains(x.Pin))
                        join u1 in _lookup_userRepository.GetAll() on t1.Pin equals u1.Id
                        where t1.Transaction_Date.Date >= input.FromDate.Date && t1.Transaction_Date.Date <= input.ToDate.Date

                        select new GetTransactionForViewDto()
            {
                Transaction = new TransactionDto
                {
                    TransType        = t1.TransType,
                    KeyType          = t1.KeyType,
                    CreationTime     = t1.CreationTime,
                    Transaction_Date = t1.Transaction_Date,
                    Pin  = t1.Pin,
                    Time = t1.Time,
                    Id   = t1.Id,
                    ProjectManagerApprove = t1.ProjectManagerApprove,
                    UnitManagerApprove    = t1.UnitManagerApprove
                },
                UserName = u1.Name == null ? "" : u1.Name.ToString(),
                ProjectName = project.NameEn
            };

            var data = await query.ToListAsync();

            var totalCount = await query.CountAsync();

            foreach (var item in data)
            {
                var userShifts = _UserShiftRepository.GetAll().Where(x => x.UserId == item.Transaction.Pin && x.Date.Date == item.Transaction.Transaction_Date.Date).ToList();

                if (userShifts.Count > 0)
                {
                    foreach (var userShift in userShifts)
                    {
                        var minutes = (Double.Parse(item.Transaction.Time.Split(":")[0]) * 60) + (Double.Parse(item.Transaction.Time.Split(":")[1]));
                        //var TransTime = new DateTime(1990, 11, 20).AddMinutes(minutes);
                        var TransactionShift = _shiftRepository.FirstOrDefault(x => x.TimeInRangeFrom <= minutes && x.TimeOutRangeTo >= minutes && x.Id == userShift.ShiftId);
                        if (TransactionShift != null)
                        {
                            item.ShiftName = TransactionShift.NameEn;
                            item.TimeIn    = TransactionShift.TimeIn;
                            item.TimeOut   = TransactionShift.TimeOut;
                            item.LateIn    = TransactionShift.LateIn;
                            item.LateOut   = TransactionShift.LateOut;
                            item.EarlyIn   = TransactionShift.EarlyIn;
                            item.EarlyOut  = TransactionShift.EarlyOut;

                            if (item.Transaction.KeyType == 1)
                            {
                                if ((int)minutes > TransactionShift.TimeIn)
                                {
                                    item.Attendance_LateIn = (int)minutes - TransactionShift.TimeIn;
                                }
                            }


                            if (item.Transaction.KeyType == 2)
                            {
                                if ((int)minutes > TransactionShift.TimeOut)
                                {
                                    item.Overtime          = (int)minutes - TransactionShift.TimeOut;
                                    data[0].TotalOverTime += (int)minutes - TransactionShift.TimeOut;
                                }

                                else
                                {
                                    item.Attendance_EarlyOut = TransactionShift.TimeOut - (int)minutes;
                                }
                            }
                        }
                    }
                }
            }


            return(new PagedResultDto <GetTransactionForViewDto>(
                       totalCount,
                       data
                       ));
        }
Ejemplo n.º 2
0
        public TransactionControllerFixture()
        {
            ApiVersion = new ApiVersion(1, 0);

            MockTransactionRepository = new Mock <ITransactionRepository>();

            var crearedAt = DateTime.Now.AddDays(-1);

            Transactions = new List <GetTransactionDto>
            {
                new GetTransactionDto {
                    Id = 1,
                    TransactionTypeId = 1,
                    TransactionType   = "Food",
                    PaymentTypeId     = 2,
                    PaymentType       = "Credit",
                    Date        = DateTime.Now.AddDays(-10),
                    Description = "Peanuts in Coke",
                    Amount      = 6.5m,
                    Cashflow    = "Expense",
                    CreatedAt   = crearedAt
                },
                new GetTransactionDto {
                    Id = 2,
                    TransactionTypeId = 2,
                    TransactionType   = "Extra Income",
                    PaymentTypeId     = 1,
                    PaymentType       = "Cash",
                    Date        = DateTime.Now.AddDays(-5),
                    Description = "Income from sale",
                    Amount      = 110.5m,
                    Cashflow    = "Income",
                    CreatedAt   = crearedAt
                }
            };

            ValidCreateTransactionDto = new CreateTransactionDto
            {
                TransactionTypeId = 2,
                PaymentTypeId     = 1,
                Date        = DateTime.Now.AddDays(-2),
                Description = "Interest from Deposit",
                Amount      = 456.5m,
                Cashflow    = "Income"
            };

            CreateTransactionDtoResult = new GetTransactionDto
            {
                Id = 3,
                TransactionTypeId = 2,
                TransactionType   = "Extra Income",
                PaymentTypeId     = 1,
                PaymentType       = "Cash",
                Date        = DateTime.Now.AddDays(-2),
                Description = "Interest from Deposit",
                Amount      = 456.5m,
                Cashflow    = "Income",
                CreatedAt   = DateTime.Now
            };

            ValidEditTransactionDto = new EditTransactionDto
            {
                TransactionTypeId = 2,
                PaymentTypeId     = 1,
                Date        = DateTime.Now.AddDays(-5),
                Description = "Income from sale",
                Amount      = 10110.5m,
                Cashflow    = "Income"
            };

            EditTransactionDtoResult = new GetTransactionDto
            {
                Id = 2,
                TransactionTypeId = 2,
                TransactionType   = "Extra Income",
                PaymentTypeId     = 1,
                PaymentType       = "Cash",
                Date        = DateTime.Now.AddDays(-5),
                Description = "Income from sale",
                Amount      = 10110.5m,
                Cashflow    = "Income",
                CreatedAt   = crearedAt
            };
        }