public virtual async Task <IActionResult> GetAllEmployeeExcusesJsonForKendo([DataSourceRequest] DataSourceRequest request
                                                                                    , int employeeId)
        {
            var allExcusesDataList = await _employeesExcusesManager.GetAllAsNoTrackingListAsync(e => e.EmployeeId == employeeId);

            var resultData = _mapper.Map <List <EmployeeExcuseViewModel> >(allExcusesDataList);

            if (resultData != null && resultData.Count > 0)
            {
                try
                {
                    var erpData = await _erpManager.GetEmployeesInfo(new int[] { employeeId });

                    var empInfo = erpData?.FirstOrDefault();
                    if (empInfo != null)
                    {
                        foreach (var empExcuse in resultData)
                        {
                            empExcuse.EmployeeName = empInfo.Name;
                        }
                    }
                }
                catch (Exception)
                {
                }
            }

            return(Json(resultData.ToDataSourceResult(request)));
        }
Example #2
0
        public async Task <IActionResult> Details(int id)
        {
            try
            {
                var resultData = await _erpManager.GetEmployeesInfo(new int[] { id });

                if (resultData == null || resultData.Count < 1)
                {
                    return(NotFound());
                }

                resultData = await setupEmployeesInfo(resultData, DateTime.Today);

                return(View(resultData.First()));
            }
            catch (Exception)
            {
                throw;
            }
        }
        public virtual async Task <IActionResult> GetAllEmployeeCalendarsJsonForKendo([DataSourceRequest] DataSourceRequest request
                                                                                      , int employeeId)
        {
            try
            {
                var allDataList = await _employeesCalendarsManager.GetAllAsNoTrackingListAsync(e => e.EmployeeId == employeeId);

                var resultData = _mapper.Map <List <EmployeeCalendarViewModel> >(allDataList);

                if (resultData != null && resultData.Count > 0)
                {
                    try
                    {
                        var erpData = await _erpManager.GetEmployeesInfo(new int[] { employeeId });

                        var empInfo = erpData?.FirstOrDefault();
                        if (empInfo != null)
                        {
                            foreach (var empCalendar in resultData)
                            {
                                empCalendar.EmployeeName = empInfo.Name;
                            }
                        }
                    }
                    catch (Exception)
                    {
                    }
                }

                return(Json(resultData.OrderBy(c => c.StartDate).ToDataSourceResult(request)));
            }
            catch (Exception ex)
            {
                return(Json(new DataSourceResult()
                {
                    Errors = ex.Message
                }));
            }
        }
Example #4
0
        public async Task <bool> DoWork()
        {
            try
            {
                //Check if there is any open proceesing request
                var openProcessingRequest = await _processingsRequestsManager.GetSingleItemAsync(pr => !pr.Completed);

                if (openProcessingRequest != null)
                {
                    //Get requset employees ids
                    IEnumerable <decimal> listOfEmployeesIdsNumbers = openProcessingRequest.Employees.TryParseToNumbers();
                    List <int>            employeesIds = listOfEmployeesIdsNumbers?.Select(d => (int)d).ToList() ?? new List <int>();

                    //Get last processed day report for required employees
                    var lastDayReport = await _employeesDaysReportsManager
                                        .GetAll(d => (employeesIds.Count < 1 || employeesIds.Contains(d.EmployeeId)) &&
                                                d.ProcessingDate > openProcessingRequest.RequestDate)
                                        .OrderByDescending(d => d.EmployeeId).ThenByDescending(d => d.DayDate).FirstOrDefaultAsync();

                    int      lastEmployeeId = lastDayReport?.EmployeeId ?? 0;
                    DateTime fromDate       = lastDayReport?.DayDate.AddDays(1) ?? openProcessingRequest.FromDate;
                    DateTime toDate         = lastDayReport?.DayDate.AddDays(10) ?? openProcessingRequest.FromDate.AddDays(10);
                    toDate = toDate <= openProcessingRequest.ToDate ? toDate : openProcessingRequest.ToDate;

                    var employees = await _erpManager.GetEmployeesInfo(employeesIds);

                    var lastRequestEmployeeId = employees.Max(e => e.EmployeeId);

                    if (fromDate > openProcessingRequest.ToDate)
                    {
                        if (lastEmployeeId >= lastRequestEmployeeId)
                        {
                            openProcessingRequest.Completed     = true;
                            openProcessingRequest.CompletedDate = DateTime.Now;
                            await _processingsRequestsManager.UpdateItemAsync(openProcessingRequest);

                            return(true);
                        }

                        fromDate = openProcessingRequest.FromDate;
                        toDate   = openProcessingRequest.FromDate.AddDays(10);
                        toDate   = toDate <= openProcessingRequest.ToDate ? toDate : openProcessingRequest.ToDate;

                        employees = employees
                                    .Where(e => e.EmployeeId > lastEmployeeId).OrderBy(e => e.EmployeeId)
                                    .Take(100).ToList();
                    }
                    else if (lastEmployeeId > 0)
                    {
                        employees = employees
                                    .Where(e => e.EmployeeId <= lastEmployeeId).OrderByDescending(e => e.EmployeeId)
                                    .Take(100).ToList();
                    }
                    else
                    {
                        employees = employees
                                    .Where(e => e.EmployeeId > lastEmployeeId).OrderBy(e => e.EmployeeId)
                                    .Take(100).ToList();
                    }

                    return(await processDaysReports(employees, fromDate, toDate));
                }
            }
            catch (Exception ex)
            {
            }

            return(true);
        }