public object GetShiftScheduleById(int id)
        {
            object result = null;

            ShiftScheduleVM objShiftSchedule = new ShiftScheduleVM();

            try
            {
                using (_context)
                {
                    objShiftSchedule = _context.ShiftSchedule.Where(x => x.Id == id).Select(y => new ShiftScheduleVM
                    {
                        Id           = y.Id,
                        ShiftId      = y.ShiftId,
                        Year         = y.Year,
                        Month        = y.Month,
                        ScheduleDate = y.ScheduleDate,
                        //StartDate = y.StartDate,
                        //EndDate = y.EndDate,
                        EmployeeId       = y.EmployeeId,
                        ScheduleDetailId = y.ScheduleDetailId
                                           //EmployeeIds = _context.ShiftScheduleEmployeeMapping.Where(z => z.ScheduleId == y.Id).Select(p => p.EmployeeId).ToList()
                    }).FirstOrDefault();

                    result = new
                    {
                        objShiftSchedule,
                        error = "0",
                        msg   = "Success"
                    };
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
                result = new
                {
                    objShiftSchedule,
                    error = "1",
                    msg   = "Error"
                };
            }
            return(result);
        }
        public object CreateUpdateShiftSchedule(int id, [FromBody] ShiftScheduleVM model)
        {
            object result    = null;
            string message   = "";
            string errorcode = "";
            string excp      = "";

            if (model == null)
            {
                return(BadRequest());
            }
            using (_context)
            {
                using (var _ctxTransaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        if (id != 0)
                        {
                            List <ShiftSchedule> listToRemove = new List <ShiftSchedule>();

                            listToRemove = _context.ShiftSchedule.Where(y => y.ScheduleDetailId == id).ToList();
                            if (listToRemove.Count > 0)
                            {
                                _context.ShiftSchedule.RemoveRange(listToRemove);
                                _context.SaveChanges();
                            }

                            var entityUpdate = _context.ShiftScheduleDetail.FirstOrDefault(x => x.Id == id);

                            if (entityUpdate != null)
                            {
                                entityUpdate.ScheduleType = model.ScheduleType;
                                entityUpdate.Monthly      = model.Monthly;
                                entityUpdate.Weekly       = model.Weekly;
                                entityUpdate.Daily        = model.Daily;
                                entityUpdate.ByWeekly     = model.ByWeekly;
                                entityUpdate.StartDate    = model.StartDate;
                                entityUpdate.EndDate      = model.EndDate;
                                entityUpdate.ShiftId      = model.ShiftId;

                                _context.SaveChanges();
                            }

                            if (model.EmployeeIds.Count > 0)
                            {
                                foreach (var Empid in model.EmployeeIds)
                                {
                                    //ShiftScheduleEmployeeMapping obj = new ShiftScheduleEmployeeMapping
                                    //{
                                    //    ScheduleId = objShiftSchedule.Id,
                                    //    EmployeeId = Empid,
                                    //    ShiftId = objShiftSchedule.ShiftId
                                    //};
                                    //_context.ShiftScheduleEmployeeMapping.Add(obj);
                                    if ((bool)model.Daily == true)
                                    {
                                        if (IsWorkingDay(model.ScheduleDate.Value.DayOfWeek))
                                        {
                                            ShiftSchedule objShiftSchedule = new ShiftSchedule();
                                            objShiftSchedule.ShiftId          = model.ShiftId;
                                            objShiftSchedule.Year             = model.Year;
                                            objShiftSchedule.Month            = model.Month;
                                            objShiftSchedule.ScheduleDate     = model.ScheduleDate;
                                            objShiftSchedule.EmployeeId       = model.EmployeeId;
                                            objShiftSchedule.ScheduleDetailId = entityUpdate.Id;
                                            //objShiftSchedule.StartDate = model.StartDate;
                                            //objShiftSchedule.EndDate = model.EndDate;
                                            _context.ShiftSchedule.Add(objShiftSchedule);
                                            _context.SaveChanges();
                                        }
                                    }
                                    else
                                    {
                                        if (model.StartDate != null && model.EndDate != null)
                                        {
                                            for (DateTime date = (DateTime)model.StartDate; date <= model.EndDate; date = date.AddDays(1))
                                            {
                                                if (IsWorkingDay(date.DayOfWeek))
                                                {
                                                    ShiftSchedule objShiftSchedule = new ShiftSchedule();
                                                    objShiftSchedule.ShiftId          = model.ShiftId;
                                                    objShiftSchedule.Year             = model.Year;
                                                    objShiftSchedule.Month            = model.Month;
                                                    objShiftSchedule.ScheduleDate     = date;
                                                    objShiftSchedule.EmployeeId       = model.EmployeeId;
                                                    objShiftSchedule.ScheduleDetailId = entityUpdate.Id;
                                                    //objShiftSchedule.StartDate = model.StartDate;
                                                    //objShiftSchedule.EndDate = model.EndDate;
                                                    _context.ShiftSchedule.Add(objShiftSchedule);
                                                }
                                            }

                                            _context.SaveChanges();
                                        }
                                    }
                                }
                            }

                            _ctxTransaction.Commit();
                            message   = "Entry Updated";
                            errorcode = "0";
                        }
                        else
                        {
                            ShiftScheduleDetail objShiftscheduleDetail = new ShiftScheduleDetail();
                            objShiftscheduleDetail.ScheduleType = model.ScheduleType;
                            objShiftscheduleDetail.Monthly      = model.Monthly;
                            objShiftscheduleDetail.Weekly       = model.Weekly;
                            objShiftscheduleDetail.Daily        = model.Daily;
                            objShiftscheduleDetail.ByWeekly     = model.ByWeekly;
                            objShiftscheduleDetail.StartDate    = model.StartDate;
                            objShiftscheduleDetail.EndDate      = model.EndDate;
                            objShiftscheduleDetail.ShiftId      = model.ShiftId;
                            _context.ShiftScheduleDetail.Add(objShiftscheduleDetail);
                            _context.SaveChanges();

                            if (model.EmployeeIds.Count > 0)
                            {
                                foreach (var Empid in model.EmployeeIds)
                                {
                                    //ShiftScheduleEmployeeMapping obj = new ShiftScheduleEmployeeMapping
                                    //{
                                    //    ScheduleId = objShiftSchedule.Id,
                                    //    EmployeeId = Empid,
                                    //    ShiftId = objShiftSchedule.ShiftId
                                    //};
                                    //_context.ShiftScheduleEmployeeMapping.Add(obj);
                                    if ((bool)model.Daily == true)
                                    {
                                        if (IsWorkingDay(model.ScheduleDate.Value.DayOfWeek))
                                        {
                                            ShiftSchedule objShiftSchedule = new ShiftSchedule();
                                            objShiftSchedule.ShiftId          = model.ShiftId;
                                            objShiftSchedule.Year             = model.Year;
                                            objShiftSchedule.Month            = model.Month;
                                            objShiftSchedule.ScheduleDate     = model.ScheduleDate;
                                            objShiftSchedule.EmployeeId       = model.EmployeeId;
                                            objShiftSchedule.ScheduleDetailId = objShiftscheduleDetail.Id;
                                            //objShiftSchedule.StartDate = model.StartDate;
                                            //objShiftSchedule.EndDate = model.EndDate;
                                            _context.ShiftSchedule.Add(objShiftSchedule);
                                            _context.SaveChanges();
                                        }
                                    }
                                    else
                                    {
                                        if (model.StartDate != null && model.EndDate != null)
                                        {
                                            for (DateTime date = (DateTime)model.StartDate; date <= model.EndDate; date = date.AddDays(1))
                                            {
                                                if (IsWorkingDay(date.DayOfWeek))
                                                {
                                                    ShiftSchedule objShiftSchedule = new ShiftSchedule();
                                                    objShiftSchedule.ShiftId          = model.ShiftId;
                                                    objShiftSchedule.Year             = model.Year;
                                                    objShiftSchedule.Month            = model.Month;
                                                    objShiftSchedule.ScheduleDate     = date;
                                                    objShiftSchedule.EmployeeId       = model.EmployeeId;
                                                    objShiftSchedule.ScheduleDetailId = objShiftscheduleDetail.Id;
                                                    //objShiftSchedule.StartDate = model.StartDate;
                                                    //objShiftSchedule.EndDate = model.EndDate;
                                                    _context.ShiftSchedule.Add(objShiftSchedule);
                                                }
                                            }
                                            _context.SaveChanges();
                                        }
                                    }
                                }
                            }
                            //await _ctx.SaveChangesAsync();
                            _context.SaveChanges();
                            _ctxTransaction.Commit();
                            message   = "Saved Successfully";
                            errorcode = "0";
                        }
                    }
                    catch (Exception e)
                    {
                        _ctxTransaction.Rollback();
                        e.ToString();
                        message   = "Saved Error";
                        errorcode = "1";
                        excp      = e.ToString();
                    }

                    result = new
                    {
                        error = errorcode,
                        msg   = message,
                        excp  = excp
                    };
                }
            }
            return(result);
        }