Exemplo n.º 1
0
        public IActionResult CopyWeek(int id, [FromBody] CopyWeekModel copyWeek)
        {
            UserCanAccessOrganization(id);

            DateTime copyStartDate = copyWeek.StartDate.Date;
            DateTime copyEndDate   = copyStartDate.AddDays(7);

            ValidateScheduleCopy(id, copyStartDate);

            var employeeShifts = _schedulerContext.EmployeeShifts
                                 .Include(es => es.Employee)
                                 .Include(es => es.Employee.Organization)
                                 .Include(es => es.Shift)
                                 .Where(es => es.Employee.Organization.OrganizationId == id && es.ShiftStartTime > copyStartDate && es.ShiftEndTime < copyEndDate)
                                 .ToList();

            foreach (var sourceShift in employeeShifts)
            {
                EmployeeShift employeeShiftEntity = new EmployeeShift
                {
                    Employee           = sourceShift.Employee,
                    Shift              = sourceShift.Shift,
                    ShiftStartTime     = sourceShift.ShiftStartTime.AddDays(7),
                    ShiftEndTime       = sourceShift.ShiftEndTime.AddDays(7),
                    ConfirmationNumber = 1
                };

                _schedulerContext.EmployeeShifts.Add(employeeShiftEntity);
            }

            _schedulerContext.SaveChanges();

            return(new ObjectResult(true));
        }
        private void EndShift(string username, string password, decimal totalHotel, decimal totalBar, decimal totalSales, string closeShift)
        {
            var person = AppSecurity.GetUser(username, password);

            var today = DateTime.Today.ToShortDateString();

            var es = _employeeShiftService.GetAll(2).Where(x => x.PersonId == person.PersonID && x.ShiftDate.ToShortDateString().Equals(today)).LastOrDefault();

            if (es == null)
            {
                EmployeeShift employeeShift = new EmployeeShift();
                employeeShift.ShiftDate  = DateTime.Now;
                employeeShift.StartTime  = DateTime.Now;
                employeeShift.EndTime    = DateTime.Now;
                employeeShift.PersonId   = person.PersonID;
                employeeShift.TotalSales = decimal.Zero;
                employeeShift.TotalHotelSalesRecievable = decimal.Zero;
                employeeShift.TotalBarSalesRecievable   = decimal.Zero;
                employeeShift.CloseMethod = "OPEN";
                _employeeShiftService.Create(employeeShift);
            }
            else
            {
                es.EndTime     = DateTime.Now;
                es.TotalSales  = totalSales;
                es.CloseMethod = closeShift;
                es.TotalHotelSalesRecievable = totalHotel;
                es.TotalBarSalesRecievable   = totalBar;
                _employeeShiftService.Update(es);
            }
        }
Exemplo n.º 3
0
        public ActionResult AddShiftToEmployee(EmployeeShift empShift)
        {
            var t = new Project1DBEntities();

            t.EmployeeShifts.Add(empShift);
            t.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemplo n.º 4
0
        public IActionResult CopyDay(int id, [FromBody] CopyDayModel copyDay)
        {
            UserCanAccessOrganization(id);

            DayOfWeek fromDay       = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), copyDay.FromDay);
            DateTime  copyStartDate = StartOfWeek(copyDay.ScheduleDate, fromDay);
            DateTime  copyEndDate   = copyStartDate.AddDays(1);

            int copyDaysForward = copyDay.ScheduleDate.Subtract(copyStartDate).Days;

            var employeeShifts = _schedulerContext.EmployeeShifts
                                 .Include(es => es.Employee)
                                 .Include(es => es.Employee.Organization)
                                 .Include(es => es.Shift)
                                 .ThenInclude(es => es.Schedule)
                                 .Where(es => es.Employee.Organization.OrganizationId == id && es.ShiftStartTime > copyStartDate && es.ShiftEndTime < copyEndDate)
                                 .ToList();

            var fromSchedule = employeeShifts.First().Shift.Schedule;

            // need to figure out how to translate shifts across
            foreach (var sourceShift in employeeShifts)
            {
                string targetDay        = copyDay.ScheduleDate.DayOfWeek.ToString();
                int    sourcePositionId = _schedulerContext.Shifts.Include(s => s.Position)
                                          .Single(s => s.ShiftId == sourceShift.Shift.ShiftId).Position.PositionId;

                Shift targetShift = _schedulerContext.Shifts
                                    .Include(s => s.Position)
                                    .Include(s => s.Schedule)
                                    .SingleOrDefault(s =>
                                                     s.Schedule.ScheduleId == fromSchedule.ScheduleId &&
                                                     s.Position.PositionId == sourcePositionId &&
                                                     s.Day == targetDay &&
                                                     s.StartTime == sourceShift.Shift.StartTime &&
                                                     s.EndTime == sourceShift.Shift.EndTime);

                if (targetShift == null)
                {
                    throw new InvalidOperationException("Could not find matching shifts to copy to.");
                }

                EmployeeShift employeeShiftEntity = new EmployeeShift
                {
                    Employee           = sourceShift.Employee,
                    Shift              = targetShift,
                    ShiftStartTime     = sourceShift.ShiftStartTime.AddDays(copyDaysForward),
                    ShiftEndTime       = sourceShift.ShiftEndTime.AddDays(copyDaysForward),
                    ConfirmationNumber = 1
                };

                _schedulerContext.EmployeeShifts.Add(employeeShiftEntity);
            }

            _schedulerContext.SaveChanges();

            return(new ObjectResult(true));
        }
Exemplo n.º 5
0
 public EmployeeShiftDisplayModel(EmployeeShift employeeShift)
 {
     EmployeeShiftId  = employeeShift.EmployeeShiftId;
     ShiftId          = employeeShift.Shift.ShiftId;
     PositionName     = employeeShift.Shift.Position.Name;
     PositionCategory = employeeShift.Shift.Position.Category;
     ShiftStartTime   = (employeeShift.AdjustedStartTime ?? employeeShift.ShiftStartTime).ConvertFromUTC(false);
     ShiftEndTime     = (employeeShift.AdjustedEndTime ?? employeeShift.ShiftEndTime).ConvertFromUTC(false);
     Cancelled        = employeeShift.Canceled;
     CancelReason     = employeeShift.CancelReason;
 }
        /// <summary>
        /// Check if the start time and endtime falls between start time and endtime of existing shifts
        /// </summary>
        /// <param name="NewShift"></param>
        /// <returns></returns>
        public static bool  isShiftOverlap(EmployeeShift NewShift)
        {
            var t = WeekRoster.Roster.Where(i => i.EmpId == NewShift.EmpId && i.DepartmentId == NewShift.DepartmentId && ((NewShift.StartTime > i.StartTime && NewShift.StartTime < i.EndTime)) || (NewShift.EndTime > i.StartTime && NewShift.EndTime < i.EndTime)).ToList();

            if (t.Count > 0)
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 7
0
        public IActionResult Post(int id, [FromBody] AddEmployeeShiftModel employeeShift)
        {
            if (employeeShift == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(new ObjectResult(ModelState));
            }

            UserCanAccessEmployee(employeeShift.EmployeeId);

            Employee employeeEntity = _schedulerContext.Employees.Single(e => e.EmployeeId == employeeShift.EmployeeId);
            Shift    shiftEntity    = _schedulerContext.Shifts.Single(s => s.ShiftId == employeeShift.ShiftId);

            TimeSpan parsedStartTime = TimeSpan.Parse(shiftEntity.StartTime);
            DateTime startTime       = employeeShift.ShiftDate.ToUniversalTime().Date;

            if (parsedStartTime.IsUtcTimeNextLocalDay())
            {
                startTime = startTime.AddDays(1);
            }
            startTime = startTime.Add(parsedStartTime).ConvertStaticShift();

            TimeSpan parsedEndTime = TimeSpan.Parse(shiftEntity.EndTime);
            DateTime endTime       = employeeShift.ShiftDate.ToUniversalTime().Date;

            if (parsedEndTime.IsUtcTimeNextLocalDay())
            {
                endTime = endTime.AddDays(1);
            }
            endTime = endTime.Add(parsedEndTime).ConvertStaticShift();

            EmployeeShift employeeShiftEntity = new EmployeeShift
            {
                Employee           = employeeEntity,
                Shift              = shiftEntity,
                ShiftStartTime     = startTime,
                ShiftEndTime       = endTime,
                ConfirmationNumber = 1
            };

            // TODO: NEED TO VALIDATE BASED ON UI RULES

            _schedulerContext.EmployeeShifts.Add(employeeShiftEntity);
            _schedulerContext.SaveChanges();

            //_smsSender.SendSmsAsync("9529131633", $"Shift added {startTime.ToString("MM/dd/yyyy")}");

            return(new ObjectResult(employeeShiftEntity.EmployeeShiftId));
        }
Exemplo n.º 8
0
        public void TestShiftInsertion()
        {
            DatabaseConnection connection = new DatabaseConnection();

            var shift = EmployeeShift.From(new ArduinoLogRequest
            {
                Data     = "r abc",
                Password = "******"
            }, connection);

            shift.RegisterUsing(connection);
        }
Exemplo n.º 9
0
        public ActionResult AddShiftToEmployee(int id)
        {
            Employee e = empBL.GetEmployeeByID(id);

            ViewBag.name = e.FirstName + e.LastName;
            var shifts = sBL.GetShiftsData();

            ViewBag.shifts = shifts;
            EmployeeShift se = new EmployeeShift();

            se.EmployeeID = id;
            return(View("AddShiftToEmployee", se));
        }
Exemplo n.º 10
0
        public string LastShift()
        {
            var connection = new DatabaseConnection();

            var shift = EmployeeShift.GetLast(connection);


            return(JsonSerializer.Serialize(shift != null ? new
            {
                employee_name = shift.Employee.Reference.Name,
                is_join = shift.EndTime == null
            } : new object()));
        }
Exemplo n.º 11
0
 public ActionResult AddShiftEmp(EmployeeShift emp)
 {
     if (Session["UserBL"] != null && ((UserBL)Session["UserBL"]).CheckActionCounter(0))
     {
         EmployeeBL.AddShift(emp);
         return(RedirectToAction("EmployeeMenu"));
     }
     else
     {
         Session.Clear();
         return(RedirectToAction("Index", "LogIn"));
     }
 }
Exemplo n.º 12
0
        //Creating the system//Work!
        private void PartOne()
        {
            foreach (var emp in shiftsContainer.EmployeeConstraints)
            {
                var currEmpName = new Worker()
                {
                    Name = emp.Name
                };

                var greedyEmploee = new GreedyEmployee()
                {
                    Name = emp.Name
                };

                //Console.WriteLine("**1**");
                foreach (var empDay in emp.WeeklyConstraints)
                {
                    if (empDay.Value.Contains("Free day"))
                    {
                        continue;
                    }

                    var constraintsDay   = empDay.Key;
                    var constraintsShift = empDay.Value;

                    var schedulareDay = schedulare.Days.FirstOrDefault(x => x.Name.Contains(constraintsDay));

                    var schedulareShift = schedulareDay.Shifts.FirstOrDefault(x => x.Name.Contains(constraintsShift));

                    if (schedulareShift.Workers.Count < shiftsContainer.ShiftParams.NumberOfWokersInShift)
                    {
                        greedyEmploee.AddShift();
                        Worker newEmp = new Worker();
                        newEmp.Name = currEmpName.Name;
                        schedulareShift.Workers.Add(newEmp);
                    }
                    else
                    {
                        var shift = new EmployeeShift()
                        {
                            Day = constraintsDay, ShiftName = constraintsShift
                        };

                        greedyEmploee.ShiftsThatWasNotAssigned.Add(shift);
                    }
                    //Console.WriteLine("**2**");
                }
                greedyEmpList.Add(greedyEmploee);
            }
            //PrintAll();
        }
Exemplo n.º 13
0
 public ActionResult AddShiftToEmployee(int id)
 {
     if (Session["UserBL"] != null && ((UserBL)Session["UserBL"]).CheckActionCounter(1))
     {
         EmployeeShift emp = new EmployeeShift();
         emp.EmployeeID = id;
         return(View("AddEmployeeShift", emp));
     }
     else
     {
         Session.Clear();
         return(RedirectToAction("Index", "LogIn"));
     }
 }
Exemplo n.º 14
0
        public ActionResult AddShiftToEmployee(int empID)
        {
            var t     = new Project1DBEntities();
            var model = new EmployeeShift();

            model.EmployeeID = empID;
            var shifts         = t.Shifts.ToList();
            var employeeShifts = t.EmployeeShifts.Where(g => g.EmployeeID == empID).ToList();
            var shiftsToAdd    = shifts.Where(g => !employeeShifts.Any(p => p.ShiftID == g.ID)).ToList();

            ViewData.Add("ShiftsList", shiftsToAdd);
            ViewData.Add("EmpID", empID);
            return(View(model));
        }
Exemplo n.º 15
0
        public static IEnumerable <EmployeeShift> GetDummyData()
        {
            var csvData = new List <EmployeeShift>();

            var csvRow1 = new EmployeeShift
            {
                EmployeeId = "1",
                Date       = "2019-10-07",
                StartTime  = "09:00",
                EndTime    = "10:00",
                Project    = "Google"
            };

            var csvRow2 = new EmployeeShift
            {
                EmployeeId = "2",
                Date       = "2019-10-07",
                StartTime  = "10:00",
                EndTime    = "12:00",
                Project    = "Facebook"
            };

            var csvRow3 = new EmployeeShift
            {
                EmployeeId = "3",
                Date       = "2019-10-07",
                StartTime  = "10:00",
                EndTime    = "12:00",
                Project    = "Google"
            };

            var csvRow4 = new EmployeeShift
            {
                EmployeeId = "2",
                Date       = "2019-10-08",
                StartTime  = "10:00",
                EndTime    = "12:00",
                Project    = "Facebook"
            };


            csvData.Add(csvRow1);
            csvData.Add(csvRow2);
            csvData.Add(csvRow3);
            csvData.Add(csvRow4);

            return(csvData);
        }
        public ActionResult SetEmployeeShift(EmployeeShift employeeShift)
        {
            #region activity count
            /*Activity section start*/
            var currentActivityCount = new UserActivityLogBL().AddUserActivityToLog();
            if (currentActivityCount > int.Parse(Session["ActivityLimit"].ToString()))
            {
                return(RedirectToAction("LogOut", "LogIn", new { IsOverLimit = true }));
            }
            /*Activity section end*/
            #endregion

            employeeBL.AddShiftToEmployee(employeeShift);

            return(RedirectToAction("Index"));
        }
Exemplo n.º 17
0
        public IActionResult SaveShift(Shift shift)
        {
            var employeeId = Request.Form["EmployeeId"];

            shift.Date = DateTime.Now;
            _db.Shifts.Add(shift);
            _db.SaveChanges();

            var es = new EmployeeShift();

            es.EmployeeId = int.Parse(employeeId);
            es.ShiftId    = shift.Id;
            _db.EmployeeShifts.Add(es);
            _db.SaveChanges();

            return(RedirectToAction("Index", "Employees"));
        }
        public static void GetWeekRoster()
        {
            EmployeeShift EmpA = new EmployeeShift();

            EmpA.EmpId        = 1;
            EmpA.DepartmentId = 1;
            EmpA.StartTime    = new DateTime(2020, 07, 15, 09, 00, 00);
            EmpA.EndTime      = EmpA.StartTime.AddHours(8);
            WeekRoster.Roster.Add(EmpA);

            EmployeeShift EmpB = new EmployeeShift();

            EmpB.EmpId        = 2;
            EmpB.DepartmentId = 1;
            EmpB.StartTime    = new DateTime(2020, 07, 15, 09, 00, 00);
            EmpB.EndTime      = EmpA.StartTime.AddHours(8);
            WeekRoster.Roster.Add(EmpB);
        }
Exemplo n.º 19
0
 public JsonResult AddEmployeeShift(string _cardId, string _shiftid, string _start, string _finish)
 {
     try
     {
         using (var db = new ProjeEntities())
         {
             EmployeeShift es = new EmployeeShift();
             es.ShiftId    = db.Shifts.Where(x => x.Name == _shiftid).Select(x => x.Id).FirstOrDefault();
             es.EmployeeId = db.Employees.Where(x => x.CardNumber == _cardId).Select(x => x.Id).FirstOrDefault();
             es.Finish     = Convert.ToDateTime(_finish);
             es.Start      = Convert.ToDateTime(_start);
             db.EmployeeShifts.Add(es);
             db.SaveChanges();
         }
     }
     catch (Exception)
     {
         throw;
     }
     return(Json("a"));
 }
        private void CreateShift(string username, string password)
        {
            var person = AppSecurity.GetUser(username, password);
            var today  = DateTime.Today.ToShortDateString();

            var es = _employeeShiftService.GetAll(2).FirstOrDefault(x => x.ShiftDate.ToShortDateString().Equals(today) && x.PersonId == person.PersonID);

            if (es == null)
            {
                EmployeeShift employeeShift = new EmployeeShift();
                employeeShift.ShiftDate  = DateTime.Now;
                employeeShift.StartTime  = DateTime.Now;
                employeeShift.EndTime    = null;
                employeeShift.PersonId   = person.PersonID;
                employeeShift.TotalSales = decimal.Zero;
                employeeShift.TotalHotelSalesRecievable = decimal.Zero;
                employeeShift.TotalBarSalesRecievable   = decimal.Zero;
                employeeShift.CloseMethod = "OPEN";
                _employeeShiftService.Create(employeeShift);
            }
        }
        static void Main(string[] args)
        {
            Program.GetWeekRoster();
            EmployeeShift NewShift = new EmployeeShift();

            NewShift.EmpId        = 1;
            NewShift.DepartmentId = 1;
            NewShift.StartTime    = new DateTime(2020, 07, 15, 16, 00, 00);
            NewShift.EndTime      = NewShift.StartTime.AddHours(8);


            if (isShiftOverlap(NewShift))
            {
                Console.WriteLine("Shift Overlap for " + NewShift.EmpId);
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("No Overlap");
                Console.ReadLine();
            }
        }
Exemplo n.º 22
0
        public IActionResult Operation(string id)
        {
            if (!IsLogged())
            {
                return(NotFound());
            }
            ViewBag.PageLocation = PageLocation.Operation;

            id ??= "Index";

            switch (id)
            {
            case "Index":

                return(View("Operation/Index"));

            case "Order":
                ViewBag.CurrentOption = "Fechar Pedido";
                return(View("Operation/Order"));

            case "Session":
                ViewBag.CurrentOption = "Definir Sessão";
                return(View("Operation/Session"));

            case "Shift":
                ViewBag.CurrentOption = "GerenciarTurno";
                var connection = new DatabaseConnection();

                TableViewModel model = new TableViewModel();
                model.Labels = new[] { "ID", "Nome", "Horário Entrada", "Horário Saída" };
                model.Data   = EmployeeShift.GetTable(connection);
                return(View("Operation/Shift", model));

            default:
                return(NotFound());
            }
        }
Exemplo n.º 23
0
        public EmployeeShiftModel(EmployeeShift employeeShift)
        {
            EmployeeShiftId   = employeeShift.EmployeeShiftId;
            EmployeeId        = employeeShift.Employee.EmployeeId;
            ShiftId           = employeeShift.Shift.ShiftId;
            Canceled          = employeeShift.Canceled;
            Reason            = employeeShift.CancelReason;
            ShiftStartTime    = employeeShift.ShiftStartTime;
            ShiftEndTime      = employeeShift.ShiftEndTime;
            AdjustedStartTime = employeeShift.AdjustedStartTime;
            AdjustedEndTime   = employeeShift.AdjustedEndTime;

            LocalShiftStartTime = ShiftStartTime.ConvertFromUTC(false);
            LocalShiftEndTime   = ShiftEndTime.ConvertFromUTC(false);

            if (AdjustedStartTime.HasValue)
            {
                LocalAdjustedStartTime = AdjustedStartTime.Value.ConvertFromUTC(false);
            }
            if (AdjustedEndTime.HasValue)
            {
                LocalAdjustedEndTime = AdjustedEndTime.Value.ConvertFromUTC(false);
            }
        }
Exemplo n.º 24
0
 public ActionResult GetNewEmployeeShift(EmployeeShift es, int shiftID)
 {
     empBL.AddNewShift(es, shiftID);
     return(RedirectToAction("Index"));
 }
Exemplo n.º 25
0
        public async Task <string> LogData()
        {
            Console.WriteLine("Request Received");

            try
            {
                using StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8);

                string body = await reader.ReadToEndAsync();


                ArduinoLogRequest request = JsonSerializer.Deserialize <ArduinoLogRequest>(body);

                // ...

                try
                {
                    if (request.Valid)
                    {
                        try
                        {
                            DatabaseConnection database = new DatabaseConnection();


                            EmployeeShift.From(request, database).RegisterUsing(database);

                            Console.WriteLine($"Insertion Done: {request.RfidData()}");
                        }
                        catch (InvalidOperationException ex)
                        {
                            Console.WriteLine(ex);

                            return(Messages.Failure("Invalid operation"));
                        }
                        catch (KeyNotFoundException)
                        {
                            Console.WriteLine("RFID not found");
                            Console.WriteLine("RFID" + request.Data);

                            Response.StatusCode = 404;

                            return(Messages.Failure("RFID not found"));
                        }
                    }
                    else
                    {
                        Response.StatusCode = 403;
                        return(Messages.Failure("Invalid credentials"));
                    }
                }
                catch (Exception ex) when(ex is OutOfMemoryException || ex is MySqlException)
                {
                    Console.WriteLine(ex);
                    Response.StatusCode = 500;
                    return(Messages.Failure());
                }

                // LOG DATA

                return(Messages.Success());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                Response.StatusCode = 500;
                return(Messages.Failure("Internal server error"));
            }
        }
Exemplo n.º 26
0
 public EmployeeShift Create(EmployeeShift employeeShift)
 {
     _unitOfWork.EmployeeShiftRepository.Insert(employeeShift);
     _unitOfWork.Save();
     return(employeeShift);
 }
Exemplo n.º 27
0
 public void Delete(EmployeeShift employeeShift)
 {
     _unitOfWork.EmployeeShiftRepository.Delete(employeeShift);
     _unitOfWork.Save();
 }
Exemplo n.º 28
0
 public CalcShift(EmployeeShift es)
 {
     StartTime = es.AdjustedStartTime ?? es.ShiftStartTime;
     EndTime   = es.AdjustedEndTime ?? es.ShiftEndTime;
 }
 public void Add(EmployeeShift employeeShift)
 {
     _billableDbContext.Add(employeeShift);
     _billableDbContext.SaveChanges();
 }
Exemplo n.º 30
0
 public EmployeeShift Update(EmployeeShift employeeShift)
 {
     _unitOfWork.EmployeeShiftRepository.Update(employeeShift);
     _unitOfWork.Save();
     return(employeeShift);
 }