Ejemplo n.º 1
0
        public ActionResult <IEnumerable <string> > AddRewards([FromBody] OverTimeRewards form)

        {
            string currentUserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var    _clientid     = Guid.Parse(currentUserId);


            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var NewOverTimeRewards = new OverTimeRewards
            {
                OverTimeRewards_Price   = form.OverTimeRewards_Price,
                Employees_Id            = form.Employees_Id,
                OverTimeRewards_Date    = form.OverTimeRewards_Date,
                OverTimeRewards_Enterid = _clientid,
                OverTimeRewards_Note    = form.OverTimeRewards_Note,
            };

            _context.OverTimeRewards.Add(NewOverTimeRewards);

            _context.SaveChanges();
            return(Ok(new Response
            {
                Message = "Done !",
                Data = NewOverTimeRewards,
                Error = false
            }));
        }
Ejemplo n.º 2
0
        public ActionResult <IEnumerable <string> > CloseTask([FromBody] CloseDto from, Guid TaskId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var    time          = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now);
            var    time1         = time.AddHours(3);
            string currentUserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var    _clientid     = Guid.Parse(currentUserId);

            var Task = _context.Tasks.Where(x => x.Id == TaskId).FirstOrDefault();



            Task.Task_Employee_Close = _clientid;
            Task.Task_Done           = time1;
            Task.Task_Status         = 3;
            Task.Task_closed_Note    = from.Task_closed_Note;

            _context.Entry(Task).State = Microsoft.EntityFrameworkCore.EntityState.Modified;


            var taskrewards = _context.RewardsTable.Where(x => x.Id == Task.Task_Price_rewards).FirstOrDefault();
            var followers   = _context.TaskFollowers.Where(x => x.TaskId == TaskId).ToList();

            decimal num = taskrewards.RewardsPrice / (followers.Count + 1);


            var Rewards = new OverTimeRewards
            {
                Employees_Id            = Task.Task_Employee_WorkOn,
                OverTimeRewards_Enterid = Task.Task_Employee_Open,
                OverTimeRewards_Date    = Task.Task_Done,
                OverTimeRewards_Note    = "مكافئة عمل" + " : " + Task.Task_Title,
                OverTimeRewards_Price   = num
            };

            _context.OverTimeRewards.Add(Rewards);
            _context.SaveChanges();

            foreach (var i in followers)
            {
                var followesRewards = new OverTimeRewards
                {
                    Employees_Id            = i.EmployeeId,
                    OverTimeRewards_Enterid = Task.Task_Employee_Open,
                    OverTimeRewards_Date    = Task.Task_Done,
                    OverTimeRewards_Note    = "مكافئة عمل" + " : " + Task.Task_Title,
                    OverTimeRewards_Price   = num
                };

                _context.OverTimeRewards.Add(followesRewards);
                _context.SaveChanges();
            }
            return(Ok(new Response
            {
                Message = "Done !",
                Data = Task,
                Error = false
            }));
        }
        public ActionResult <IEnumerable <string> > AddOut([FromBody] AddInOut form)

        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var time  = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now);
            var time1 = time.AddHours(3);

            string currentUserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var    _clientid     = Guid.Parse(currentUserId);



            var employeeinfo = _context.EmployessUsers.Where(x => x.Id == _clientid).FirstOrDefault();
            var admininfo    = _context.AdminUser.FirstOrDefault();

            var inoutinfo = _context.InOut.Where(x => x.EmplyeeId == _clientid && x.In_Out_Status == form.In_Out_Status && x.In_Out_Date == time1.Date).ToList();

            if (inoutinfo.Count != 0)
            {
                return(BadRequest(new Response
                {
                    Message = "لقد قمت بالصمة سابقا",
                    Data = "",
                    Error = true
                }));
            }


            double sLatitude  = Convert.ToDouble(admininfo.Company_Latitude);
            double sLongitude = Convert.ToDouble(admininfo.Company_Longitude);
            double eLatitude  = Convert.ToDouble(form.Employee_Latitude);
            double eLongitude = Convert.ToDouble(form.Employee_Longitude);


            int distansm = 0;

            if ((sLatitude == eLatitude) && (sLongitude == eLongitude))
            {
                distansm = 0;
            }
            else
            {
                double theta = sLongitude - eLongitude;
                double dist  = Math.Sin(deg2rad(sLatitude)) * Math.Sin(deg2rad(eLatitude)) + Math.Cos(deg2rad(sLatitude)) * Math.Cos(deg2rad(eLatitude)) * Math.Cos(deg2rad(theta));
                dist = Math.Acos(dist);
                dist = rad2deg(dist);
                dist = dist * 60 * 1.1515;
                var distans  = ((dist * 1.609344).ToString()).Substring(0, 5);
                var ddistans = Convert.ToDouble(distans) * 1000;
                distansm = Convert.ToInt32(ddistans);
            }



            string time_fromDb = employeeinfo.Employee_Out_Time;

            string   fromDb = time1.Date.ToString("yyyy-MM-dd") + " " + time_fromDb;
            DateTime FromDB = DateTime.Parse(fromDb);

            DateTime DCurrent = DateTime.Parse(time1.ToString("yyyy-MM-dd HH:mm:ss"));

            int      xMinites   = 0;
            TimeSpan diffResult = DCurrent.ToUniversalTime().Subtract(FromDB.ToUniversalTime());

            if (diffResult < TimeSpan.Zero)
            {
                TimeSpan tidiffResult1 = (diffResult * (-1));
                string   x             = tidiffResult1.ToString();
                string   nHour         = x.Substring(0, 2);
                int      xHour;

                if (!int.TryParse(nHour, out xHour))
                {
                    xHour = 0;
                }

                xMinites = xHour * 60;

                string ntime = x.Substring(3, 2);
                int    xTime;
                if (!int.TryParse(ntime, out xTime))
                {
                    xTime = 0;
                }

                xMinites += xTime;
            }
            else
            {
                string x = diffResult.ToString();



                string nHour = x.Substring(0, 2);
                int    xHour;

                if (!int.TryParse(nHour, out xHour))
                {
                    xHour = 0;
                }

                xMinites = xHour * 60;

                string ntime = x.Substring(3, 2);
                int    xTime;
                if (!int.TryParse(ntime, out xTime))
                {
                    xTime = 0;
                }

                xMinites += xTime;
            }

            if (DCurrent > FromDB)
            {
                var     OverTime      = _context.OverTime.ToList();
                decimal OverTimePrice = 0;
                foreach (var i in OverTime)
                {
                    if ((i.formtime) <= xMinites && xMinites <= i.totime)
                    {
                        OverTimePrice = i.OverTimePrice;


                        var AddOverTimeRewards = new OverTimeRewards
                        {
                            OverTimeRewards_Date    = DateTime.Now.Date,
                            OverTimeRewards_Note    = "اضافة فوق وقت انتهاء العمل" + xMinites + "دقيقة",
                            OverTimeRewards_Price   = i.OverTimePrice,
                            Employees_Id            = _clientid,
                            OverTimeRewards_Enterid = Guid.Parse("3ef34045-bbbb-49e6-880e-7e7bcb9c9a16"),
                        };

                        _context.OverTimeRewards.Add(AddOverTimeRewards);

                        _context.SaveChanges();
                    }
                }
            }


            if (FromDB > DCurrent)
            {
                var     late           = _context.ScheduleDelayPenalties.ToList();
                decimal PenaltiesPrice = 0;
                foreach (var i in late)
                {
                    if ((i.formtime) <= xMinites && xMinites <= i.totime)
                    {
                        PenaltiesPrice = i.PenaltiesPrice;


                        var AddPenalties = new Penalties
                        {
                            Penalties_Date    = time1.Date,
                            Penalties_Note    = "خروج قبل الوقت بـ" + xMinites + "دقيقة",
                            Penalties_Price   = PenaltiesPrice,
                            Employees_Id      = _clientid,
                            Penalties_Enterid = Guid.Parse("3ef34045-bbbb-49e6-880e-7e7bcb9c9a16"),
                        };

                        _context.Penalties.Add(AddPenalties);

                        _context.SaveChanges();
                    }
                }
            }



            var AddInOut = new InOut
            {
                distance           = distansm,
                In_Out_Date        = time1.Date,
                In_Out_Status      = form.In_Out_Status,
                EmplyeeId          = _clientid,
                Employee_Latitude  = form.Employee_Latitude,
                Employee_Longitude = form.Employee_Longitude,
                In_Out_Time        = time1.ToString("hh:mm tt"),
            };

            _context.InOut.Add(AddInOut);

            _context.SaveChanges();


            _context.SaveChanges();
            return(Ok(new Response
            {
                Message = "Done !",
                Data = "Thanks",
                Error = false
            }));
        }