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 )); }
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 }; }