public async Task <IActionResult> AddAnnualLeave([FromBody] AnnualLeave model)
        {
            using (var connection = new SqlConnection(conStr))
            {
                await connection.OpenAsync();


                var sqlStatement1 = $"exec sp_CheckForLeave {model.PersonnelId}, '{model.LeaveStart.ToString("yyyy-MM-dd")}','{model.LeaveEnd.ToString("yyyy-MM-dd")}'";
                var result        = await connection.QueryAsync <DataResponse>(sqlStatement1);

                if (result.First().Response != 0)
                {
                    return(BadRequest(result.First().Message));
                }
                else
                {
                    var sqlStatement2 = @"
                    INSERT INTO AnnualLeave 
                    (PersonnelId, LeaveStart, LeaveEnd)
                    VALUES (@PersonnelId, @LeaveStart, @LeaveEnd)";
                    await connection.ExecuteAsync(sqlStatement2, model);

                    return(Ok());
                }
            }
        }
        /// <summary>
        /// 根据父类获取部门
        /// </summary>
        /// <param name="Id">父级Id</param>
        /// <returns></returns>
        public JsonResult GetDepartment()
        {
            string strParentId         = Request["ParentId"];
            List <SelectListItem> list = new List <SelectListItem>();

            if (string.IsNullOrEmpty(strParentId))
            {
                IQueryable <Department> listDep = _departmentContract.Departments.Where(x => x.IsDeleted == false && x.IsEnabled == true);
                var entity = listDep.Select(x => new SelectListItem
                {
                    Value = x.Id.ToString(),
                    Text  = x.DepartmentName,
                }).ToList();
                list = entity;
            }
            else
            {
                int         id     = int.Parse(strParentId);
                AnnualLeave ann    = _annualLeaveContract.AnnualLeaves.Where(x => x.Id == id).FirstOrDefault();
                var         entity = new SelectListItem
                {
                    //Value = ann.Department.Id.ToString(),
                    //Text = ann.Department.DepartmentName,
                };
                list.Add(entity);
            }
            return(Json(list, JsonRequestBehavior.AllowGet));
        }
Beispiel #3
0
        // Добавление отпусков для тестирования
        public async Task TestCreateAsync()
        {
            // Если график отпусков на 2018 год не найден, то добавляем его
            int leaveScheduleCount = await Database.LeaveSchedules.CountAsync(ls => ls.Year == 2018);

            if (leaveScheduleCount == 0)
            {
                Database.LeaveSchedules.Create(new LeaveSchedule {
                    Number = 1, Year = 2018, DateOfPreparation = new DateTime(2017, 12, 1)
                });
                await Database.SaveAsync();
            }
            // Получаем Id сотрудников
            int[] employeeIds = (await Database.Employees.GetAllAsync()).Select(e => e.Id).ToArray();
            if (employeeIds.Length == 0)
            {
                throw new ValidationException("Сначала нужно добавить сотрудников", "");
            }
            // Добавляем отпуска
            for (int i = 0; i < 100; i++)
            {
                AnnualLeave annualLeave = new AnnualLeave {
                    ActualNumberOfDays    = new Random().Next(10, 20) + i % 5,
                    ScheduledNumberOfDays = new Random().Next(10, 20) + i % 5,
                    ScheduledDate         = new DateTime(2018, (new Random().Next(1000, 2000) + i) % 12 + 1, (new Random().Next(2000, 3000) + i) % 28 + 1),
                    ActualDate            = new DateTime(2018, (new Random().Next(3000, 4000) + i) % 12 + 1, (new Random().Next(5000, 6000) + i) % 28 + 1),
                    EmployeeId            = employeeIds[i % employeeIds.Length],
                    LeaveScheduleId       = (await Database.LeaveSchedules.GetFirstAsync(ls => ls.Year == 2018)).Id
                };
                Database.AnnualLeaves.Create(annualLeave);
            }
            await Database.SaveAsync();
        }
        private void GetLeaveSummary(out AnnualLeave getEmpAnnaulLeave, out double approvedLeaveTotal, out double pendingLeaveTotal, out List <EmployeeLeave> leaveApproved, out List <EmployeeLeave> leavePending, out double remainingLeave)
        {
            var loginUsername = HttpContext.User.Identity.Name;
            var empId         = employeeRepository.GetByUserName(loginUsername).EmployeeId;

            //total year for year
            getEmpAnnaulLeave = annualLeaveRepository.GetById(empId);

            //approve leave total

            approvedLeaveTotal = 0;
            pendingLeaveTotal  = 0;
            leaveApproved      = leaveRepository.GetEmployeeApprovedLeaves(empId);


            foreach (var item in leaveApproved)
            {
                DateTime startdate = Convert.ToDateTime(item.LeaveStartDate);
                DateTime endDate   = Convert.ToDateTime(item.LeaveEndDate);
                approvedLeaveTotal += AnnualLeaveHelper.CalculateLeave(startdate, endDate, true, true);
            }


            leavePending = leaveRepository.GetEmployeePendingLeaves(empId);
            foreach (var item in leavePending)
            {
                DateTime startdate = Convert.ToDateTime(item.LeaveStartDate);
                DateTime endDate   = Convert.ToDateTime(item.LeaveEndDate);
                pendingLeaveTotal += AnnualLeaveHelper.CalculateLeave(startdate, endDate, true, true);
            }

            remainingLeave = Convert.ToDouble(getEmpAnnaulLeave.TotalLeavePerYear) - (Convert.ToDouble(pendingLeaveTotal) + Convert.ToDouble(approvedLeaveTotal));
        }
Beispiel #5
0
        private async Task UpdateLeaveSchedule(AnnualLeave item)
        {
            // Добавляем информацию о графике отпусков
            LeaveSchedule leaveSchedule = await Database.LeaveSchedules.GetFirstAsync(ls => ls.Year == item.ScheduledDate.Value.Year);

            item.LeaveScheduleId = leaveSchedule.Id;
        }
Beispiel #6
0
        public ActionResult DeleteConfirmed(int id)
        {
            AnnualLeave annualLeave = db.AnnualLeaves.Find(id);

            db.AnnualLeaves.Remove(annualLeave);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public Boolean InsertAnnualLeaveRequest(AnnualLeave model)
        {
            lock (locker)
            {
                var insert = database.Insert(model) > 0;

                return(insert);
            }
        }
        public Boolean UpdateAnnualLeaveRequest(AnnualLeave model)
        {
            lock (locker)
            {
                var update = database.Update(model) > 0;

                return(update);
            }
        }
        public ActionResult Edit([Bind(Include = "LeaveID,LeaveStateID,UserID,StartDate,EndDate,RequestDate,Note")] AnnualLeave annualLeave)
        {
            if (ModelState.IsValid)
            {
                db.Entry(annualLeave).State = EntityState.Modified;
                db.SaveChanges();
            }

            return(Redirect("/"));
        }
        public ActionResult Create([Bind(Include = "LeaveID,LeaveStateID,UserID,StartDate,EndDate,RequestDate,Note")] AnnualLeave annualLeave)
        {
            if (ModelState.IsValid)
            {
                db.AnnualLeave.Add(annualLeave);
                db.SaveChanges();
            }

            return(Redirect("/"));
        }
Beispiel #11
0
        // Удаление отпуска
        public override async Task DeleteAsync(int id)
        {
            AnnualLeave annualLeave = await Database.AnnualLeaves.FindByIdAsync(id);

            if (annualLeave == null)
            {
                return;
            }
            Database.AnnualLeaves.Remove(annualLeave);
            await Database.SaveAsync();
        }
        public void GetMembersLeaveDataPresentTest()
        {
            //Set Util to testMode so that json file can be read without referring to server dir
            Utils.testMode = true;

            AnnualLeave al  = new AnnualLeave();
            Employee    emp = new Employee();

            emp = al.GetMembersLeave("mannd");

            Assert.AreNotEqual(emp.Leave, null);
        }
        public void GetMembersLeaveTest()
        {
            //Set Util to testMode so that json file can be read without referring to server dir
            Utils.testMode = true;

            AnnualLeave al  = new AnnualLeave();
            Employee    emp = new Employee();

            emp = al.GetMembersLeave("mannd");

            Assert.IsInstanceOfType(emp, typeof(Employee));
        }
Beispiel #14
0
        // Добавление нового отпуска (с валидацией)
        public override async Task CreateAsync(AnnualLeaveDTO annualLeaveDto)
        {
            await ValidationAnnualLeave(annualLeaveDto);

            InitializeMapperDTO();
            AnnualLeave annualLeave = Mapper.Map <AnnualLeaveDTO, AnnualLeave>(annualLeaveDto);

            await UpdateLeaveSchedule(annualLeave);

            Database.AnnualLeaves.Create(annualLeave);
            await Database.SaveAsync();
        }
Beispiel #15
0
 public ActionResult Edit([Bind(Include = "Id,EmployeeCode,Surname,OtherNames,Faculty,Department,Maritalstatus,Nationality,PhoneNo,Fileno,PresentStatus,Salaryperannum,Proposedannualleave,LeavefromDate,LeavetoDate,Totalworkingday,IsLeave,IsLeavefromDate,IsLeavetoDate,OutstandingLeaveDays,IsPublicService,IsHOD,ActOfficer,IApprove,IsDeleted,CreatedDate,CustomerId")] AnnualLeave annualLeave)
 {
     if (ModelState.IsValid)
     {
         db.Entry(annualLeave).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.EmployeeCode = new SelectList(db.EmployeeGIs, "EmployeeCode", "Rank", annualLeave.EmployeeCode);
     ViewBag.EmployeeCode = new SelectList(db.EmployeeGIs, "EmployeeCode", "Rank", annualLeave.EmployeeCode);
     return(View(annualLeave));
 }
Beispiel #16
0
        // GET: AnnualLeaves/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AnnualLeave annualLeave = db.AnnualLeaves.Find(id);

            if (annualLeave == null)
            {
                return(HttpNotFound());
            }
            return(View(annualLeave));
        }
        public JsonResult AnnualLeave(AnnualLeave obj)
        {
            try
            {
                db.AnnualLeaves.Add(obj);

                db.SaveChanges();
                return(Json(obj));
            }
            catch (Exception ext)
            {
                return(Json(ext));
            }
        }
        public void GetLastDateBetweenTwoDatesTest()
        {
            AnnualLeave al = new AnnualLeave();
            DateTime    d0 = Convert.ToDateTime("08/05/2018");
            DateTime    d1 = Convert.ToDateTime("14/05/2018");

            DateTime expectedDate = new DateTime();

            expectedDate = Convert.ToDateTime("14/05/2018");

            DateTime genDate = al.GetLastHalfDay(d0, d1);

            //Ensure dates are equal
            Assert.AreEqual(genDate, expectedDate);
        }
        public void CalculateAnnualLeaveLeftTest()
        {
            //Set Util to testMode so that json file can be read without referring to server dir
            Utils.testMode = true;

            AnnualLeave al  = new AnnualLeave();
            Employee    emp = new Employee();

            emp = al.GetMembersLeave("mannd");

            double days = al.CalculateAnnLeaveLeft(emp);

            //Test data is currently set to 5.5 for mannd
            Assert.AreEqual(days, 16);
        }
        // GET: AnnualLeaves/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AnnualLeave annualLeave = db.AnnualLeave.Find(id);

            if (annualLeave == null)
            {
                return(HttpNotFound());
            }
            ViewBag.LeaveStateID = new SelectList(db.LeaveState, "LeaveStateID", "Description", annualLeave.LeaveStateID);
            ViewBag.UserID       = new SelectList(db.Users, "Id", "FullName", annualLeave.UserID);
            return(View(annualLeave));
        }
Beispiel #21
0
        // GET: AnnualLeaves/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            AnnualLeave annualLeave = db.AnnualLeaves.Find(id);

            if (annualLeave == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EmployeeCode = new SelectList(db.EmployeeGIs, "EmployeeCode", "Rank", annualLeave.EmployeeCode);
            ViewBag.EmployeeCode = new SelectList(db.EmployeeGIs, "EmployeeCode", "Rank", annualLeave.EmployeeCode);
            return(View(annualLeave));
        }
Beispiel #22
0
        // Получение отпуска по id
        public override async Task <AnnualLeaveDTO> FindByIdAsync(int?id)
        {
            if (id == null)
            {
                throw new ValidationException("Не установлен id отпуска", "");
            }
            AnnualLeave annualLeave = await Database.AnnualLeaves.FindByIdAsync(id.Value);

            if (annualLeave == null)
            {
                throw new ValidationException("Отпуск не найден", "");
            }
            InitializeMapper();
            AnnualLeaveDTO annualLeaveDto = Mapper.Map <AnnualLeave, AnnualLeaveDTO>(annualLeave);

            return(annualLeaveDto);
        }
Beispiel #23
0
        public static void SyncAnnualLeaveRequests()
        {
            var assignedStaffId = App.SettingsDatabase.GetSetting("AssignedStaffId");

            if (assignedStaffId != null)
            {
                var client = new HttpClient
                {
                    BaseAddress = new Uri(_url),
                    Timeout     = TimeSpan.FromSeconds(60)
                };

                var response = client.GetAsync("GetAnnualLeaveRequests?StaffId=" + assignedStaffId.Value + "&format=json").Result;

                if (response.IsSuccessStatusCode)
                {
                    var result = JsonConvert.DeserializeObject <List <AnnualLeaveRequestsViewModel> >(response.Content.ReadAsStringAsync().Result);

                    foreach (var item in result)
                    {
                        var annualLeaveRequest = new AnnualLeave()
                        {
                            CancelReason  = item.CancelReason,
                            DateRequested = item.DateRequested,
                            Ending        = item.Ending,
                            EndingTime    = item.EndingTime,
                            Id            = item.Id,
                            IsSynced      = item.IsSynced,
                            Notes         = item.Notes,
                            RequestId     = item.RequestId,
                            StaffId       = item.StaffId,
                            Starting      = item.Starting,
                            StartingTime  = item.StartingTime,
                            TotalDays     = item.TotalDays,
                            StatusId      = item.StatusId,
                            DeclineReason = item.DeclineReason
                        };

                        App.AnnualLeaveDatabase.InsertUpdateAnnualLeaveRequest(annualLeaveRequest);
                    }
                }
            }
        }
        public void GetBusyDateConflictsTest()
        {
            Utils.testMode = true;
            AnnualLeave al   = new AnnualLeave();
            Project     proj = new Project();

            proj = proj.GetProjLeave("AM Dashboard");
            List <ProjectBusyPeriodsHelper> conflicts = al.IdentifyBusyLeavePeriods(proj);
            List <DateTime> busyDates = conflicts[0].ConflictingDates;

            List <DateTime> expectedDates = new List <DateTime>();

            expectedDates.Add(Convert.ToDateTime("04/04/2018"));
            expectedDates.Add(Convert.ToDateTime("05/04/2018"));
            expectedDates.Add(Convert.ToDateTime("06/04/2018"));

            //Ensure dates are equal
            CollectionAssert.AreEqual(busyDates, expectedDates);
        }
        public void GetDatesBetweenTwoDatesTest()
        {
            AnnualLeave al = new AnnualLeave();
            DateTime    d0 = Convert.ToDateTime("08/05/2018");
            DateTime    d1 = Convert.ToDateTime("14/05/2018");

            List <DateTime> expectedDates = new List <DateTime>();

            expectedDates.Add(Convert.ToDateTime("08/05/2018"));
            expectedDates.Add(Convert.ToDateTime("09/05/2018"));
            expectedDates.Add(Convert.ToDateTime("10/05/2018"));
            expectedDates.Add(Convert.ToDateTime("11/05/2018"));
            expectedDates.Add(Convert.ToDateTime("14/05/2018"));

            List <DateTime> genList = al.GetDatesBetweenTwoDates(d0, d1);

            //Ensure date lists are equal, excluding weekends.
            CollectionAssert.AreEqual(genList, expectedDates);
        }
Beispiel #26
0
        public ActionResult AnnualLeave(EmployeeViewModel employeeViewModel)
        {
            EmployeeViewModel _employeeViewModel = GetEmployeeDetails();
            var annualLeaveObj = new AnnualLeave();

            if (ModelState.IsValid)
            {
                var employeeUsername = employeeViewModel.EmployeeUserName;
                var managerID        = employeeViewModel.ManagerUserName;
                annualLeaveObj.EmployeeStartDate = employeeViewModel.StartDate;
                annualLeaveObj.Employee_Id       = Convert.ToInt32(employeeUsername);
                var isUserAdmin = roleRepository.GetAll();
                annualLeaveObj.EmployeeManager_Id = Convert.ToInt32(managerID);

                annualLeaveObj.Year = employeeViewModel.Year;
                _leaveRepository.Insert(annualLeaveObj);
            }

            return(View(_employeeViewModel));
        }
        public async Task <IActionResult> UpdateAnnualLeave([FromBody] AnnualLeave model)
        {
            if (model.Id == 0)
            {
                return(BadRequest());
            }

            using (var connection = new SqlConnection(conStr))
            {
                await connection.OpenAsync();

                var sqlStatement = @"
                    UPDATE AnnualLeave 
                    SET  PersonnelId = @PersonnelId,
                        LeaveStart = @LeaveStart,
                        LeaveEnd = @LeaveEnd
                    WHERE Id = @Id";
                await connection.ExecuteAsync(sqlStatement, model);
            }
            return(Ok());
        }
        public Boolean InsertUpdateAnnualLeaveRequest(AnnualLeave model)
        {
            lock (locker)
            {
                var annualLeaveRequest = database.Table <AnnualLeave>().Where(c => c.RequestId == model.RequestId).SingleOrDefault();

                if (annualLeaveRequest != null)
                {
                    model.Id = annualLeaveRequest.Id;

                    var mn = database.Update(model);

                    return(true);
                }
                else
                {
                    var mn = database.Insert(model);

                    return(true);
                }
            }
        }
        /// <summary>
        /// 初始化部门界面
        /// </summary>
        /// <returns></returns>
        public ActionResult View(int Id)
        {
            AnnualLeave entity = _annualLeaveContract.View(Id);

            return(PartialView(entity));
        }