Пример #1
0
        public async Task <IActionResult> Create(DismissalViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(new JsonResult(new { isSucceeded = false, errors = ModelState.Errors() }));
            }

            try
            {
                var appRecruit = await _appDb.Recruits.FirstOrDefaultAsync(m => m.Id == model.RecruitId);

                var zRecruit = await _zarnicaDb.Recruits
                               .Include(m => m.Events)
                               .FirstOrDefaultAsync(m => m.Id == appRecruit.RecruitId);

                var dismissal = new Dismissal
                {
                    RecruitId         = model.RecruitId,
                    SendDismissalDate = model.SendDismissalDate,
                    ReturnDate        = model.ReturnDate,
                    Notice            = model.Notice,
                    LastEventCode     = zRecruit.LastEvent.EventCode,
                    LastEventDate     = zRecruit.LastEvent.Date
                };
                await _appDb.Dismissals.AddAsync(dismissal);

                await _appDb.SaveChangesAsync();

                return(new JsonResult(new { isSucceeded = true }));
            }
            catch
            {
                return(new JsonResult(new { isSucceeded = false, errors = ModelState.Errors() }));
            }
        }
Пример #2
0
        public async Task <IActionResult> EmployeeDismissal(Dismissal model)
        {
            if (ModelState.IsValid)
            {
                var employee = await _context.Employees.FindAsync(model.EmployeeId);

                if (employee == null)
                {
                    return(NotFound());
                }

                employee.IsDismissed = true;
                model.Id             = 0;
                model.HRManager      = await _userManager.GetUserAsync(User);

                model.DateOfAction = DateTime.Now;

                _context.Employees.Update(employee);
                await _context.Dismissals.AddAsync(model);

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(View(model));
        }
Пример #3
0
        public ActionResult Save([Bind(Include = "EmployeeId,Name,Surname,MiddleName,PasportData,PhoneNumber,Graduate,BirthDate,Address,Languages,LastJob,СomeDate,ContractTerm,DepartmentId")] Employee employee)
        {
            Dismissal dis = new Dismissal();

            if (ModelState.IsValid)
            {
                dis.Address      = employee.Address;
                dis.BirthDate    = employee.BirthDate;
                dis.ContractTerm = employee.ContractTerm;
                dis.Employee     = employee;
                dis.Graduate     = employee.Graduate;
                dis.Languages    = employee.Languages;
                dis.MiddleName   = employee.MiddleName;
                dis.Name         = employee.Name;
                dis.PasportData  = employee.PasportData;
                dis.PhoneNumber  = employee.PhoneNumber;
                dis.Surname      = employee.Surname;
                dis.СomeDate     = employee.СomeDate;
                dis.LastJob      = employee.LastJob;

                dis.DisDate = new DateTime(2018, 12, 12);
                db.Dismissals.Add(dis);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "DepartmentCity", dis.EmployeeId);
            return(View(dis));
        }
        public int AddDismissal(Dismissal data)
        {
            //проверяем был ли сотрудник принят на работу (имеется запись в таблице Recruitment)
            if (!_context.Recruitment.Any(x => x.Deleted == false && x.employeeId == data.employeeId))
            {
                //нет записи - значит еще не был принят, уволить нельзя
                return(-2);
            }

            //проверяем был ли сотрудник уволен ранее (имеется запись в таблице Dismissal)
            if (_context.Dismissal.Any(x => x.deleted == false && x.employeeId == data.employeeId))
            {
                //уже уволен - уволить повторно нельзя
                return(-1);
            }

            //добавлям заипсь об уволнении сотрудника (в таблицу Dismissal)
            var res = _context.Dismissal.Add(data);

            //сохряняем изменения
            _context.SaveChanges();

            //вернуть id новой записи в таблице Dismissal
            return(res.Entity.id);
        }
Пример #5
0
        //by laneId
        private ScannedStudent AddStudentToLane(DataSeed ds, Dismissal dismissal, int laneId, ScannedStudent scannedStudent)
        {
            var lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);
            //check isLanefull
            if (CountCarInLane(ds, dismissal.UserId, lane2FlightObj, scannedStudent.ParentLicense))
            {
                lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }

            if (ds.IsCarExistInPrevLane(lane2FlightObj.Flight2LaneId, scannedStudent.ParentLicense))
            {
                lane2FlightObj.CountCarsInLane -= 1;
            }

            dismissal.FlightLaneId          = lane2FlightObj.Flight2LaneId;
            scannedStudent.FlightNumber     = lane2FlightObj.FlightNumber;
            scannedStudent.FligthId         = lane2FlightObj.FlightId;
            lane2FlightObj.CountCarsInLane += 1;
            dismissal.CarNumber             = lane2FlightObj.CountCarsInLane;
            scannedStudent.CardId           = ds.AddStudentToDismissal(dismissal);
            if (scannedStudent.CardId == 0)
            {
                lane2FlightObj.CountCarsInLane -= 1;
                Status = "Barcode did not save. Please, try to scanne again!";
                return(null);
            }
            scannedStudent.Lane = Lanes.Where(p => p.Id == lane2FlightObj.LaneId).FirstOrDefault();

            return(scannedStudent);
        }
Пример #6
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            Dismissal dismissal = db.Dismissals.Find(id);

            db.Dismissals.Remove(dismissal);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Пример #7
0
 public ActionResult Edit([Bind(Include = "dismissalid,dismissalcode,dismissaldesc")] Dismissal dismissal)
 {
     if (ModelState.IsValid)
     {
         dismissal.lastupdated     = DateTime.Now;
         db.Entry(dismissal).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(dismissal));
 }
Пример #8
0
 public ActionResult Edit([Bind(Include = "DismissalId,Name,Surname,MiddleName,PasportData,PhoneNumber,Graduate,BirthDate,Address,Languages,LastJob,СomeDate,ContractTerm,DisDate,EmployeeId")] Dismissal dismissal)
 {
     if (ModelState.IsValid)
     {
         db.Entry(dismissal).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "Name", dismissal.EmployeeId);
     return(View(dismissal));
 }
 private string GenerateDismissalRequestContent(PersonnelDto personnel
                                                , Dismissal dismissal, RequestDuration duration, DateTime from, DateTime to)
 {
     return("request type : "
            + " " + (duration == RequestDuration.Daily ? "daily" : "hourly")
            + "dismissal" + " " + dismissal.Title
            + ", requested by: " + (personnel.Gender == Gender.Male ? "Mr." : "Mrs.")
            + "" + personnel.FullName
            + $", from date: {from.ToShortDateString()} to date:" +
            $" {to.ToShortDateString()}.");
 }
        public bool UpdateDismissal(int id, Dismissal data)
        {
            var res = _context.Dismissal.FirstOrDefault(x => x.id == id);

            if (res == null)
            {
                return(false);
            }
            res.dateOfDismissal = data.dateOfDismissal;
            res.cause           = data.cause;
            _context.SaveChanges();
            return(true);
        }
Пример #11
0
        public ActionResult Create([Bind(Include = "dismissalid,dismissalcode,dismissaldesc")] Dismissal dismissal)
        {
            if (ModelState.IsValid)
            {
                dismissal.dismissalid = Guid.NewGuid();
                dismissal.lastupdated = DateTime.Now;
                db.Dismissals.Add(dismissal);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(dismissal));
        }
Пример #12
0
        // GET: Dismissals/Delete/5
        public ActionResult Delete(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Dismissal dismissal = db.Dismissals.Find(id);

            if (dismissal == null)
            {
                return(HttpNotFound());
            }
            return(View(dismissal));
        }
Пример #13
0
        // GET: Dismissals/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Dismissal dismissal = db.Dismissals.Find(id);

            if (dismissal == null)
            {
                return(HttpNotFound());
            }
            ViewBag.EmployeeId = new SelectList(db.Employees, "EmployeeId", "Name", dismissal.EmployeeId);
            return(View(dismissal));
        }
        public IActionResult PutDismissal(int id, [FromBody] Dismissal data)
        {
            try
            {
                var res = _repository.UpdateDismissal(id, data);

                if (!res)
                {
                    return(Conflict(409));
                }

                return(Ok(res));
            }
            catch (Exception error)
            {
                return(BadRequest(error));
            }
        }
Пример #15
0
        public void TestStringConversion(int randomValue, string expectedValue, string caughtBy, string bowler)
        {
            Mock <IRandomNumberGenerator> mockRand = new Mock <IRandomNumberGenerator>();

            mockRand.Setup(x => x.GetRandomNumber(It.IsAny <int>(), It.IsAny <int>())).Returns(randomValue);
            Mock <Bowler> mockBowler = new Mock <Bowler>();

            mockBowler.Setup(x => x.Name()).Returns(bowler);

            Mock <Team> mockTeam = new Mock <Team>();

            mockTeam.Setup(x => x.GetPlayer(It.IsAny <int>())).Returns(caughtBy);
            mockTeam.Setup(x => x.NumberPlayers()).Returns(11);

            Dismissal dismissal = new Dismissal(mockBowler.Object, mockTeam.Object, mockRand.Object);

            Assert.Equal(expectedValue, dismissal.ToString());
        }
Пример #16
0
        //Altemating
        private ScannedStudent AddStudentAltemating(DataSeed ds, Dismissal dismissal, ScannedStudent scannedStudent)
        {
            isMoveRemoveCard = false;
            var laneId         = Lanes.ElementAt(currentLaneNumber).Id;
            var lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);

            if (!ds.IsCarExistInPrevLane(lane2FlightObj.Flight2LaneId, scannedStudent.ParentLicense))
            {
                currentLaneNumber = currentLaneNumber >= (Lanes.Count() - 1) ? 0 : (currentLaneNumber + 1);
                laneId            = Lanes.ElementAt(currentLaneNumber).Id;
                lane2FlightObj    = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }
            else
            {
                lane2FlightObj.CountCarsInLane -= 1;
            }

            lane2FlightObj = CheckIsLane(ds, dismissal.UserId, laneId, lane2FlightObj);

            //check isLanefull
            if (CountCarInLane(ds, dismissal.UserId, lane2FlightObj, scannedStudent.ParentLicense))
            {
                lane2FlightObj = ScannerFlights.FirstOrDefault(sf => sf.LaneId == laneId);
            }

            dismissal.FlightLaneId          = lane2FlightObj.Flight2LaneId;
            lane2FlightObj.CountCarsInLane += 1;
            dismissal.CarNumber             = lane2FlightObj.CountCarsInLane;
            scannedStudent.CardId           = ds.AddStudentToDismissal(dismissal);
            scannedStudent.FlightNumber     = lane2FlightObj.FlightNumber;
            scannedStudent.FligthId         = lane2FlightObj.FlightId;
            if (scannedStudent.CardId == 0)
            {
                lane2FlightObj.CountCarsInLane -= 1;
                Status = "Barcode did not save. Please, try to scanne again!";
                return(null);
            }
            scannedStudent.Lane = Lanes.Where(p => p.Id == lane2FlightObj.LaneId).FirstOrDefault();

            return(scannedStudent);
        }
Пример #17
0
        public void DismissalTest(int randomValue, string howOut, string caughtBy, string bowler)
        {
            Mock <IRandomNumberGenerator> mockRand = new Mock <IRandomNumberGenerator>();

            mockRand.Setup(x => x.GetRandomNumber(It.IsAny <int>(), It.IsAny <int>())).Returns(randomValue);
            Mock <Bowler> mockBowler = new Mock <Bowler>();

            mockBowler.Setup(x => x.Name()).Returns(bowler);

            Mock <Team> mockTeam = new Mock <Team>();

            mockTeam.Setup(x => x.GetPlayer(It.IsAny <int>())).Returns(caughtBy);
            mockTeam.Setup(x => x.NumberPlayers()).Returns(11);

            Dismissal dismissal = new Dismissal(mockBowler.Object, mockTeam.Object, mockRand.Object);

            Assert.Equal(howOut, dismissal._howOut);
            Assert.Equal(caughtBy, dismissal._caughtBy);
            Assert.Equal(bowler, dismissal._bowler);
        }
        public IActionResult PostDismissal(Dismissal data)
        {
            try
            {
                var res = _repository.AddDismissal(data);

                if (res == -1)
                {
                    return(Conflict("Сотрудник уже был уволен!"));
                }

                if (res == -2)
                {
                    return(Conflict("Сотрудник еще не был принят!"));
                }

                return(Ok(res));
            }
            catch (Exception error)
            {
                return(BadRequest(error));
            }
        }
Пример #19
0
        public ScannedStudent AddScannedStudenToFlight(ScannerInput card, int userId, int schoolId)
        {
            ScannedStudent result = null;

            CloseLaneStatus = "";
            CloseFlightId   = 0;
            var scannedStudent = new ScannedStudent();

            using (var ds = new DataSeed()) {
                var student = ds.GetStudentByIdForDismissal(card.StudentId, schoolId);
                if (student == null)
                {
                    Status = "Barcode not found";
                    return(null);
                }
                var parent = ds.GetParentById(card.ParentId);
                if (parent == null)
                {
                    Status = "Barcode not found";
                    return(null);
                }
                var parentName = ds.StudentAlredyScanned(card.StudentId, SchoolId);
                if (parentName != null)
                {
                    Status = "This student was picked up by " + parentName;
                    return(null);
                }

                scannedStudent.ParentId      = parent.Id;
                scannedStudent.ParentLicense = parent.DriverLicense;
                scannedStudent.StudentId     = student.Id;
                scannedStudent.ParentName    = parent.Name;
                scannedStudent.Name          = student.Name;

                var dismissal = new Dismissal
                {
                    StudentId = student.Id,
                    ParentId  = parent.Id,
                    ScanTime  = DateTime.Now,
                    UserId    = userId
                };

                if (ScannerFlights == null || ScannerFlights.Count() == 0)
                {
                    CreateNewFlight(ds, dismissal.UserId);
                }

                if (LaneLogistic == ScannerType.MultipleScanner)
                {
                    var laneId = Lanes.FirstOrDefault(l => l.UserId == dismissal.UserId).Id;
                    result = AddStudentToLane(ds, dismissal, laneId, scannedStudent);
                }
                else if (LaneLogistic == ScannerType.SingleScanner)
                {
                    if (curentLaneId == 0)
                    {
                        result = AddStudentAltemating(ds, dismissal, scannedStudent);                          // default single scanner
                    }
                    else
                    {
                        result = AddStudentToLane(ds, dismissal, curentLaneId, scannedStudent);
                    }
                }
            };

            return(result);
        }
 private string GenerateDismissalRequestTitle(Dismissal dismissal)
 {
     return("dismissal reuqest" + " " + dismissal.Title);
 }
Пример #21
0
        protected IList<EmailDto> SendEmailForClearanceChecklistNeedToApprove(IList<User> addresseeList, Dismissal entity)
        {
            const string subject = @"Новый обходной лист";
            const string notificationEmail = "*****@*****.**";
            string body = string.Format(@"Новый Обходной лист № {0} от {1} ({2}, {3}) требует вашего согласования.<br/>
                                          <a href=""https://ruscount.com:8002"">Кадровый портал</a>",
                                          entity.Number, entity.CreateDate.ToShortDateString(), entity.User.Name, entity.User.Department.Name);
            IList<EmailDto> dtoList = new List<EmailDto>();
            /*foreach (var addressee in addresseeList)
            {
                dtoList.Add(SendEmail(addressee.Email, subject, body));
            }*/
            // dtoList.Add(SendEmail(addresseeList[0].Email, subject, body));
            dtoList.Add(SendEmail(notificationEmail, subject, body));

            return dtoList;
        }