Пример #1
0
        public static bool EmialManager(string managerEmail, IList <StaffModel> staff)
        {
            const MessagesEnum messageType = MessagesEnum.WeeklyLeaveClockEmail;

            var message = new DataContextEF().Messages
                          .FirstOrDefault(m => m.MessageType.Equals((int)messageType));
            //if (message == null)
            //    throw new Exception("Weekly message type not found");

            var mailer = new Emailer
            {
                subject = "Pending Clock Records"
            };

            #region

#if DEBUG
            mailer.TOList.Add("*****@*****.**");
#else
            mailer.TOList.Add(managerEmail);
#endif
            #endregion

            mailer.body = BuildClockData(staff);
            if (!string.IsNullOrEmpty(mailer.body))
            {
                mailer.SendEmail();
            }

            return(true);
        }
Пример #2
0
        public void Test_EF_CreatingStaffWorkingHours()
        {
            var ctx = new DataContextEF();

            foreach (var staff in ctx.Staff.ToList())
            {
                if ((staff.StaffHoursData == null) || (staff.StaffHoursData.Count == 0))
                {
                    for (int i = 0; i < 7; i++)
                    {
                        staff.StaffHoursData.Add(
                            new StaffHoursModel
                        {
                            DayId          = i + 1,
                            DayTimeStart   = Convert.ToDateTime("08:00:00"),
                            DayLunchLength = 1,
                            DayTimeEnd     = Convert.ToDateTime("17:00:00"),
                            RecordStatus   = "Active",
                            StaffId        = staff.StaffId
                        }
                            );
                    }
                }
            }
            ctx.SaveChanges();
        }
        public object PeOfficeClockIn(string remoteClockData)
        {
            using (var dtx = new DataContextEF())
            {
                StaffClockModel remoteClock =
                    dtx.StaffClockData.First(x => x.Staff.StaffClockCardNumber.Equals(remoteClockData.Split('-').Last()));

                if (remoteClock != null)
                {
                    remoteClock.DataStatus    = 0;
                    remoteClock.ClockDateTime = DateTime.Now;
                    remoteClock.RecordStatus  = "Active";
                    remoteClock.StaffId       = GetStaffIdByCardNumber(remoteClock.StaffId);
                    remoteClock.Comments      = remoteClock.Comments +
                                                ("PE office clock in");

                    dtx.StaffClockData.Add(remoteClock);
                    dtx.SaveChanges();


                    object obj = new
                    {
                        Name       = remoteClock.Staff.StaffFullName,
                        Time       = DateTime.Now.TimeOfDay,
                        CardNumber = remoteClock.Staff.StaffClockCardNumber
                    };

                    return(Request.CreateResponse(HttpStatusCode.OK, obj));
                }
                return(Request.CreateResponse(HttpStatusCode.ExpectationFailed));
            }
        }
Пример #4
0
        public void Test_EF_ReadingStaffFullname()
        {
            var ctx = new DataContextEF();

            foreach (var staffModel in ctx.Staff.ToList())
            {
                Debug.WriteLine(staffModel.StaffFullName);
            }
        }
Пример #5
0
 public void Test_EF_ProcessClockingData()
 {
     using (var ctx = new DataContextEF())
     {
         var isHoliday = ctx.IsHolidayToday();
         UoWStaff.ProcessClocking();
         ctx.SaveChanges();
     }
 }
Пример #6
0
        public static List <StaffModel> CDRLookupNumber(string numberDialed)
        {
            using (var store = new DataContextEF())
            {
                if (!String.IsNullOrEmpty(numberDialed))
                {
                    //todo ref Quentin - names?
                    var aList = new List <StaffPhoneRecord>();
                    var sList = store.Staff;

                    aList = GetCDRData(DateTime.Now.AddDays(-7), DateTime.Now);

                    aList = aList.FindAll(data => data.dst == numberDialed);
                    aList = aList.OrderByDescending(x => x.DisplayCallDate).ToList();

                    foreach (var staff in sList)
                    {
                        staff.StaffCallRecords = aList.FindAll(data => data.Extension == staff.StaffTellExt);
                    }
                    return(sList.Where(x => x.StaffCallRecords.Count > 0).ToList());

                    #region LINQ join

                    //var result = (from staff in sList
                    //              join callrec in aList on staff.StaffTelExt equals callrec.Extension into staffcallrec
                    //              select staff, staff.StaffCallRecords = staffcallrec).ToList();


                    //return (from s in sList
                    //        from c in aList
                    //             join a in aList on s.StaffTelExt equals a.Extension
                    //             into callList
                    //             select new
                    //             {
                    //                 s,
                    //                 StaffCallRecords = callList.ToList<StaffPhoneRecord>()
                    //             });

                    //return (from client in ClientList    ( = List<Client>)
                    //        join address in AddressList  ( = List<Address>)
                    //        on client.ClientID equals address.ClientID
                    //           --  into callList
                    //           --  select new
                    //           --  {
                    //           --      s,
                    //           --      StaffCallRecords = callList.ToList<StaffPhoneRecord>()
                    //           --  });
                    //           should return ( List<Client>) with Addresses populated
                    //
                    //return result;

                    #endregion
                }
            }
            return(null);
        }
        private Guid GetStaffIdByEmail(string staffEmail)
        {
            using (var dataContext = new DataContextEF())
            {
                var staffId = from staffmember in dataContext.Staff
                              where staffmember.StaffEmail.Equals(staffEmail)
                              select staffmember.StaffId;

                return(staffId.FirstOrDefault());
            }
        }
        private Guid GetStaffIdByCardNumber(Guid staffid)
        {
            using (var dataContext = new DataContextEF())
            {
                var staffId = from staffmember in dataContext.Staff
                              where staffmember.StaffId.Equals(staffid)
                              select staffmember.StaffId;

                return(staffId.FirstOrDefault());
            }
        }
Пример #9
0
        protected MessagesModel GetLeaveMessage(MessagesEnum messageType)
        {
            var message = (int)messageType;

            var leavemsg = new DataContextEF().Messages.FirstOrDefault(m => m.MessageType.Equals(message));

            if (leavemsg == null)
            {
                throw new Exception("Leave approved message not found");
            }

            return(leavemsg);
        }
Пример #10
0
        public void Test_EF_ReadingStaffClockingData()
        {
            var ctx = new DataContextEF();

            foreach (var staff in ctx.Staff.ToList())
            {
                foreach (var staffClockModel in staff.StaffClockData)
                {
                    //
                    Debug.WriteLine("--");
                    Debug.WriteLine(staffClockModel.Staff.StaffFullName);
                }
            }
        }
Пример #11
0
        public void Test_EF_ReadingStaffRandomOtherStaffData()
        {
            IQueryable <StaffModel> test;
            var ctx = new DataContextEF();

            foreach (var staff in ctx.Staff.Include("StaffClockData").ToList())
            {
                foreach (var staffClockModel in staff.StaffClockData.Where(x => x.DataStatus.Equals(2)))
                {
                    Debug.WriteLine("--");
                    Debug.WriteLine(staffClockModel.ClockDateTime);
                }
            }
        }
Пример #12
0
        public static List <BranchModel> CDRData(DateTime dateFrom, DateTime dateTo, Guid?CompanyID, Guid?DivisionID, Guid?StaffID, String Carrier)
        {
            using (var store = new DataContextEF())
            {
                var dataList = GetCDRData(dateFrom, dateTo);
                var branches = store.Branches.Include("BranchDivisions").Include("BranchDivisions.DivisionStaff").Where(b => b.RecordStatus == "Active").ToList();
                if ((!String.IsNullOrEmpty(Carrier)) && (!Carrier.Equals("--All--")))
                {
                    dataList = dataList.Where(x => x.Carrier.Contains(Carrier)).ToList();
                }

                #region Filter Branches
                if ((CompanyID != null) && (CompanyID != Guid.Empty))
                {
                    branches = branches.FindAll(data => data.BranchId == CompanyID);
                }
                #endregion
                foreach (var branch in branches)
                {
                    #region Filter Divisions
                    branch.BranchDivisions = branch.BranchDivisions.Where(b => b.RecordStatus.Equals("Active")).ToList();
                    if ((DivisionID != null) && (DivisionID != Guid.Empty))
                    {
                        branch.BranchDivisions = branch.BranchDivisions.ToList().FindAll(m => m.DivisionId.Equals(DivisionID));
                    }

                    #endregion
                    foreach (var div in branch.BranchDivisions.ToList())
                    {
                        #region Filter Staff
                        div.DivisionStaff = div.DivisionStaff.ToList();
                        if ((StaffID != null) && (StaffID != Guid.Empty))
                        {
                            div.DivisionStaff = div.DivisionStaff.Where(data => data.StaffId == StaffID).ToList();
                        }
                        #endregion

                        foreach (var staff in div.DivisionStaff.ToList())
                        {
                            staff.StaffCallRecords = dataList.FindAll(m => m.Extension.Equals(staff.StaffTellExt));
                            staff.StaffCallRecords = staff.StaffCallRecords.ToList().FindAll(m => m.calldate.Date > staff.StaffJoinDate.Date);
                        }
                        //div.DivisionStaff = div.DivisionStaff.Where(s => s.TotalCallCost > 0).ToList();
                    }
                    //branch.BranchDivisions = branch.BranchDivisions.Where(p => p.TotalCallCost > 0).ToList();
                }
                return(branches.ToList());
            }
        }
Пример #13
0
        protected IEnumerable <StaffModel> GetStaffManagers()
        {
            var managers =
                new DataContextEF().Staff.Where(
                    m =>
                    m.StaffId.Equals(LeaveModel.StaffMember.StaffManager1Id) ||
                    m.StaffId.Equals(LeaveModel.StaffMember.StaffManager2Id));

            if (!managers.Any())
            {
                throw new Exception("staff memmber has no managers");
            }

            return(managers.ToList());
        }
Пример #14
0
        public void Test_EF_Create_Staff()
        {
            var ctx   = new DataContextEF();
            var staff = new StaffModel
            {
                StaffId       = Guid.NewGuid(),
                StaffName     = "Quentin",
                StaffSurname  = "Barnard",
                StaffIdNumber = "780418",
                RecordStatus  = "Active",
                StaffDivision = ctx.BranchDivisions.FirstOrDefault()
            };

            ctx.Staff.Add(staff);
            ctx.SaveChanges();
        }
Пример #15
0
 public void Test_EF_GetStaffSuggestions()
 {
     using (var ctx = new DataContextEF())
     {
         var staffList = ctx.Staff.ToList();
         foreach (var item in staffList)
         {
             Debug.WriteLine(item.StaffFullName);
             Debug.WriteLine(item.Suggestions.Count());
             foreach (var suggestionModel in item.Suggestions)
             {
                 Debug.WriteLine(suggestionModel.SuggestionSubject);
             }
         }
     }
 }
        public static ICollection <StaffClockModel> MergeClockData(Guid staffId)
        {
            using (var store = new DataContextEF())
            {
                ICollection <StaffHoursModel> hoursModel = store.StaffHourData.Where(m => m.StaffId.Equals(staffId)).ToList();
                IQueryable <StaffClockModel>  clockModel = store.StaffClockData.Where(m => m.StaffId.Equals(staffId));
                IQueryable <StaffLeaveModel>  leaveModel = store.StaffLeaveData.Where(m => m.StaffId.Equals(staffId));

                if (!clockModel.Any() || !hoursModel.Any() || !leaveModel.Any())
                {
                    throw new Exception(string.Format("Staff member with id {0} not found.", staffId));
                }

                return(MergeClockDataForGraphs(clockModel, hoursModel, leaveModel));
            }
        }
Пример #17
0
        protected sealed override void SetmailingList()
        {
            ToEmailList.Add(LeaveModel.StaffMember.StaffEmail);

            var managers =
                new DataContextEF().Staff.Where(
                    m =>
                    m.StaffId.Equals(LeaveModel.StaffMember.StaffManager1Id) ||
                    m.StaffId.Equals(LeaveModel.StaffMember.StaffManager2Id));

            if (!managers.Any())
            {
                throw new Exception("staff memmber has no managers");
            }

            //set to email list
            managers.ToList().ForEach(m => CcEmailList.Add(m.StaffEmail));
        }
Пример #18
0
        public static string UpdatePhoneStatus(string phoneStatus, string mac)
        {
            using (var dtx = new DataContextEF())
            {
                var staffPhone = dtx.PhoneDetails.Include("StaffMember").FirstOrDefault(x => x.RecordStatus.Equals("Active") && x.StaffPhoneMac.Equals(mac));
                if (staffPhone != null)
                {
                    staffPhone.StaffMember.StaffPhoneStatus = phoneStatus;
                    //staffPhone.StaffMember.PhoneDataStatus = Convert.ToInt32(phoneStatus);
                }
                dtx.SaveChanges();

                if (staffPhone != null && staffPhone.StaffMember != null)
                {
                    return("Hello " + staffPhone.StaffMember.StaffFullName + "....... You called me from the phone");
                }
            }


            return("Hello Anonymous");
        }
        public bool RemoteClockIn(StaffClockModel remoteClock)
        {
            remoteClock.RecordStatus = "Active";
            remoteClock.StaffId      = GetStaffIdByEmail(remoteClock.Email);
            remoteClock.Comments     = remoteClock.Comments +
                                       (". This clock in is of an appointment the staff member was in");

            try
            {
                using (DataContextEF dataContext = new DataContextEF())
                {
                    dataContext.StaffClockData.Add(remoteClock);
                    dataContext.SaveChanges();
                }
                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
Пример #20
0
        //this is to make sure all related printer properties are loaded
        private static List <PrinterPropertyModel> RebuildProperties(List <TonerOrderDetailsModel> orders)
        {
            using (var store = new DataContextEF())
            {
                var tempList  = new List <PrinterPropertyModel>();
                var recStatus = RecordStatusEnum.Active.ToString();

                orders.ForEach((p) =>
                {
                    var data =
                        store.PrinterProperties.Where(
                            m => m.RecordStatus.Equals(recStatus) && m.PropertyId.Equals(p.PropertyId));

                    if (data.Any())
                    {
                        tempList.Add(data.FirstOrDefault());
                    }
                });

                return(tempList.ToList());
            }
        }
Пример #21
0
        public void Test_EF_LeaveData()
        {
            using (var ctx = new DataContextEF())
            {
                var staffList = ctx.Staff.ToList();
                foreach (var staff in staffList)
                {
                    Debug.WriteLine(staff.StaffFullName);
                    Debug.WriteLine(staff.StaffIsOnLeave.ToString());

                    Debug.WriteLine(staff.StaffLeaveData.Count);
                    if (staff.StaffLeaveData.Count > 0)
                    {
                        foreach (var staffLeaveModel in staff.StaffLeaveData)
                        {
                            //Debug.WriteLine(staffLeaveModel.ApprovedBy1.StaffFullName);
                            //Debug.WriteLine(staffLeaveModel.ApprovedBy2.StaffFullName);
                        }
                    }
                    Debug.WriteLine("");
                }
            }
        }
Пример #22
0
        public static bool ClearOldTonerOrders()
        {
            using (var contextEf = new DataContextEF())
            {
                var openTonerOrders = contextEf.TonerOrderDetails.Where(x => x.OrderStatus == (int)OrderStatus.Opened).ToList();
                if (!openTonerOrders.Any())
                {
                    return(false);
                }
                else if (openTonerOrders.Any())
                {
                    for (int i = 0; i < openTonerOrders.Count; i++)
                    {
                        TonerOrderDetailsModel order = openTonerOrders[i];
                        var data = contextEf.TonerOrders.FirstOrDefault(x => x.OrderId.Equals(order.OrderId));
                        if (data != null)
                        {
                            TonerOrdersModel ordersModel = data;
                            openTonerOrders[i].TonerOrder = ordersModel;
                        }
                        if (order.TonerOrder.OrderDate.Date.AddDays(2) > order.TonerOrder.OrderDate.Date)
                        {
                        }
                    }
                    var mailer = new Emailer();
                    mailer.subject = MessageList.Open_Toner_Orders_Subject;
                    mailer.body    = MessageList.Open_Toner_Orders_Body;
                    mailer.TOList.Add(WebConfigurationManager.AppSettings["SupportEmail"]);
                    mailer.SendEmail();


                    contextEf.SaveChanges();
                    return(true);
                }
            }
            return(false);
        }
Пример #23
0
        public static IEnumerable <StaffLeaveModel> GetSimultaniousLeaveApps(StaffModel staffMember, DateTime leaveStart, DateTime leaveEnd)
        {
            var staff = new DataContextEF()
                        .Staff
                        .Include("StaffLeaveData")
                        .Where(m => m.DivisionId.Equals(staffMember.DivisionId) && m.RecordStatus.Equals("Active") && (!m.StaffId.Equals(staffMember.StaffId)));

            if (!staff.Any())
            {
                return(null);
            }

            var leaveApps = new List <StaffLeaveModel>();

            staff.ToList().ForEach((m) => m.StaffLeaveData.Where(
                                       x =>
                                       ((x.LeaveDateStart >= leaveStart.Date && x.LeaveDateStart.Date <= leaveStart) ||
                                        (x.LeaveDateStart.Date >= leaveEnd.Date && x.LeaveDateEnd.Date <= leaveEnd.Date)) &&
                                       (x.RecordStatus.Equals("Active")) &&
                                       ((x.LeaveStatus.Equals((int)LeaveStatus.Approved)) || x.LeaveStatus.Equals((int)LeaveStatus.Pending)))
                                   .ToList().ForEach(leaveApps.Add));

            return(leaveApps);
        }
Пример #24
0
        public static string GetPhoneSettings(string phoneMacAddress)
        {
            if (string.IsNullOrEmpty(phoneMacAddress))
            {
                return(string.Empty);
            }

            using (var store = new DataContextEF())
            {
                //Get a user's phone details
                var phoneDet = store.PhoneDetails
                               .Include("StaffMember")
                               .Include("StaffMember.StaffContactData")
                               .FirstOrDefault(
                    m => m.RecordStatus.Equals("Active") && m.StaffPhoneMac.Equals(phoneMacAddress));

                if (phoneDet == null)
                {
                    throw new Exception("Staff phone details not found");
                }

                phoneDet.StaffMember.StaffContactData = phoneDet.StaffMember.StaffContactData.Where(x => x.RecordStatus.Equals("Active")).ToList();

                var phoneSettings = new PhoneSettings(phoneDet);

                store.Staff.Where(m => m.StaffId != phoneDet.StaffMember.StaffId && m.RecordStatus.Equals("Active")).OrderBy(x => x.StaffName)
                .ToList().ForEach((m) => phoneSettings.Directory.PhoneList.Add(new PhoneEntry
                {
                    ContactId  = m.StaffId,
                    UserName   = string.Empty,
                    FirstName  = m.StaffName,
                    LastName   = m.StaffSurname,
                    Number     = m.StaffTellExt,
                    NumberType = "sip",
                }));

                var count      = 1;
                var sortedData = phoneSettings.Directory.PhoneList.OrderBy(x => x.LastName).ThenBy(x => x.FirstName);
                foreach (PhoneEntry phoneEntry in sortedData)
                {
                    phoneEntry.Index = count;
                    count++;
                }
                phoneSettings.Directory.PhoneList = new List <PhoneEntry>(phoneSettings.Directory.PhoneList.OrderBy(x => x.LastName).ThenBy(x => x.FirstName));
                return(phoneSettings.ToString());

                #region

                /*var workContactsToStaffContactsModel = new List<StaffContactModel>();
                 *
                 * workContacts.ForEach((m) => workContactsToStaffContactsModel.Add(new StaffContactModel
                 * {
                 *  ContactDescription = m.StaffName,
                 *  ContactId          =  m.StaffId,
                 *  ContactName        = m.StaffName,
                 *  ContactNumber      = m.StaffTellExt,
                 *  ContactSurname     = m.StaffSurname,
                 *  StaffId            = m.StaffId,
                 *  StaffMember        = m
                 * }));
                 *
                 *
                 * // workContactsToStaffContactsModel.AddRange(personalContacts);
                 *
                 * // var phoneSettings = new PhoneSettings(phoneDet);
                 *
                 * store.Staff.Where(m => m.StaffId != phoneDet.StaffMember.StaffId && m.RecordStatus.Equals("Active")).OrderBy(x => x.StaffName)
                 *         .ToList()
                 *         .ForEach((m) => phoneSettings.Directory.PhoneList.Add(new PhoneEntry
                 *             {
                 *                 ContactId = m.StaffId,
                 *                 UserName = string.Empty,
                 *
                 *                 FirstName = m.StaffName,
                 *                 LastName = m.StaffSurname,
                 *                 Number = m.StaffTellExt,
                 *                 NumberType = "sip",
                 *                 Index = phoneSettings.Directory.PhoneList.Count + 1
                 *             }));
                 *
                 * return phoneSettings.ToString();*/

                #endregion
            }
        }
Пример #25
0
        /// <summary>
        /// Fills the message with values
        /// </summary>
        protected sealed override MessagesModel Fill()
        {
            var leaveMsg = GetLeaveMessage(MessageType);

            leaveMsg.Greeting = leaveMsg.Greeting.Replace(Receiver, "Manager (s)");

            TimeSpan leaveSpan    = (LeaveModel.LeaveDateEnd - LeaveModel.LeaveDateStart);
            var      leaveDays    = 0;
            var      leaveHours   = 0;
            var      leaveMinutes = 0;

            leaveDays    = leaveSpan.Days;
            leaveHours   = leaveSpan.Hours;
            leaveMinutes = leaveSpan.Minutes;
            if (leaveSpan.Hours >= 8)
            {
                leaveDays++;
                leaveHours = 0;
            }

            //get require hours
            using (var contextEf = new DataContextEF())
            {
                var staffHours = contextEf.StaffHourData.Where(x => x.StaffId.Equals(LeaveModel.StaffId)).ToList();
                #region

                //double requiredMinutes = 0;
                //double requiredHours = 0;


                //for (int i = 0; i < staffHours.Count; i++)
                //{
                //    if (staffHours[i].DayId == (int)DateTime.Now.DayOfWeek)
                //    {
                //        requiredHours = (staffHours[i].DayTimeEnd.TimeOfDay - staffHours[i].DayTimeStart.TimeOfDay).Hours;
                //        requiredMinutes = (staffHours[i].DayTimeEnd.TimeOfDay - staffHours[i].DayTimeStart.TimeOfDay).Minutes;
                //        break;
                //    }
                //}

                //if (leaveHours == requiredHours)
                //{
                //    leaveHours = 0;

                //    if (leaveDays == 0)
                //    {
                //        leaveDays = leaveDays + 1;

                //    }
                //    else if (leaveDays > 0)
                //    {
                //        leaveDays++;
                //    }
                //}

                #endregion
                leaveMsg.Body = leaveMsg.Body
                                .Replace(Applicant, LeaveModel.StaffMember.StaffFullName)
                                .Replace(Leavetype, EnumHelper.GetEnumDescriptions((LeaveType)LeaveModel.LeaveType))
                                .Replace(FromDate, LeaveModel.LeaveDateStart.ToLongDateString() + " " + LeaveModel.LeaveDateStart.TimeOfDay /*.Add(addToHours)*/)
                                .Replace(ToDate, LeaveModel.LeaveDateEnd.ToLongDateString() + " " + LeaveModel.LeaveDateEnd.TimeOfDay /*.Add(addToHours)*/)
                                .Replace(RequestDate, LeaveModel.LeaveRequestDate.ToShortDateString())
                                .Replace(Days, leaveDays +
                                         " Day(s), " + leaveHours
                                         + " Hour(s), " + leaveMinutes
                                         + " Minute(s) ")
                                .Replace(Comments, LeaveModel.LeaveComments)
                                .Replace(RedirectLink, "http://intranet/#/view_theleave/" + LeaveModel.LeaveId)
                                .Replace(OtherDetails, StaffModels.Any() ? BuildOtherDetails() : string.Empty);

                return(leaveMsg);
            }
        }