private void btnDisableAlerts_Click(object sender, EventArgs e) { bool disableAlert = Convert.ToBoolean(this.btnDisableAlerts.Tag); AlertInfo alertInfo = (from alert in EFERTDbUtility.mEFERTDb.AlertInfos where alert != null && alert.CNICNumber == this.mCNICNumber select alert).FirstOrDefault(); if (alertInfo == null) { alertInfo = new AlertInfo(); alertInfo.CNICNumber = this.mCNICNumber; if (disableAlert) { alertInfo.DisableAlert = true; alertInfo.DisableAlertDate = DateTime.Now; alertInfo.EnableAlertDate = DateTime.MaxValue; } else { alertInfo.DisableAlert = false; alertInfo.EnableAlertDate = DateTime.Now; } EFERTDbUtility.mEFERTDb.AlertInfos.Add(alertInfo); } else { if (disableAlert) { alertInfo.DisableAlert = true; alertInfo.DisableAlertDate = DateTime.Now; } else { alertInfo.DisableAlert = false; alertInfo.EnableAlertDate = DateTime.Now; } EFERTDbUtility.mEFERTDb.Entry(alertInfo).State = System.Data.Entity.EntityState.Modified; } try { EFERTDbUtility.mEFERTDb.SaveChanges(); } catch (Exception ex) { EFERTDbUtility.RollBack(); MessageBox.Show(this, "Some error occurred.\n\n" + EFERTDbUtility.GetInnerExceptionMessage(ex)); return; } }
public static LimitStatus CheckIfUserCheckedInLimitReached(List <CheckInAndOutInfo> checkIns, List <BlockedPersonInfo> blocks, bool sendEmail = true) { LimitStatus limitStatus = LimitStatus.Allowed; SystemSetting setting = EFERTDbUtility.mEFERTDb.SystemSetting.FirstOrDefault(); int daysToEmailNotification = setting == null ? 70 : setting.DaysToEmailNotification; int daysToBlock = setting == null ? 90 : setting.DaysToBlockUser; if (checkIns.Count > 0) { CheckInAndOutInfo last = checkIns.Last(); if (last.CheckedIn) { limitStatus = LimitStatus.CurrentlyCheckIn; } else { //system deplymenrt date is 1/jan/2017 requirement is get user yearly report DateTime fromDate = new DateTime(2018, 04, 1); DateTime toDate = DateTime.Now; BlockedPersonInfo lastBlockedPerson = (from block in blocks where block != null && block.BlockedTime >= fromDate && block.BlockedTime < toDate && !block.Blocked && block.BlockedBy == CONST_SYSTEM_BLOCKED_BY select block).LastOrDefault(); if (lastBlockedPerson != null) { fromDate = lastBlockedPerson.UnBlockTime; } checkIns = (from checkin in checkIns where checkin != null && checkin.DateTimeIn >= fromDate && checkin.DateTimeIn < toDate select checkin).ToList(); if (checkIns.Count == 0) { return(limitStatus); } string name, cnic = string.Empty; if (last.CardHolderInfos != null) { name = last.CardHolderInfos.FirstName; cnic = last.CardHolderInfos.CNICNumber; } else if (last.Visitors != null) { name = last.Visitors.FirstName; cnic = last.Visitors.CNICNumber; } else { name = last.DailyCardHolders.FirstName; cnic = last.DailyCardHolders.CNICNumber; } List <AlertInfo> chAlertInfos = (from alert in EFERTDbUtility.mEFERTDb.AlertInfos where alert != null && alert.CNICNumber == cnic select alert).ToList(); DateTime alertEnableDate = DateTime.MaxValue; bool alertEnabled = true; AlertInfo lastAlertInfo = null; if (chAlertInfos != null && chAlertInfos.Count > 0) { lastAlertInfo = chAlertInfos.Last(); if (lastAlertInfo.DisableAlert) { alertEnabled = false; } else { alertEnableDate = lastAlertInfo.EnableAlertDate; } } CheckInAndOutInfo previousCheckIn = checkIns[0]; bool isSameDay = last.DateTimeIn.Date == DateTime.Now.Date; if (previousCheckIn != null) { int count = 1; DateTime previousDateTimeIn = previousCheckIn.DateTimeIn; for (int i = 1; i < checkIns.Count; i++) { CheckInAndOutInfo CurrentCheckIn = checkIns[i]; DateTime currDateTimeIn = CurrentCheckIn.DateTimeIn; TimeSpan timeDiff = currDateTimeIn.Date - previousDateTimeIn.Date; //bool isContinous = timeDiff.Days == 1 || timeDiff.Days == 2 && currDateTimeIn.DayOfWeek == DayOfWeek.Monday; if (timeDiff.Days >= 1) { count++; } //else //{ // if (currDateTimeIn.Date != previousDateTimeIn.Date) // { // count = 1; // } //} previousDateTimeIn = currDateTimeIn; } if (count >= daysToEmailNotification) { if (count >= daysToBlock && !isSameDay) //== to change >= when add category in checkins { limitStatus = LimitStatus.LimitReached; } else { if (alertEnabled) { if (sendEmail) { List <EmailAddress> toAddresses = new List <EmailAddress>(); if (EFERTDbUtility.mEFERTDb.EmailAddresses != null) { toAddresses = (from email in EFERTDbUtility.mEFERTDb.EmailAddresses where email != null select email).ToList(); foreach (EmailAddress toAddress in toAddresses) { SendMail(setting, toAddress.Email, toAddress.Name, name, cnic); } } } limitStatus = LimitStatus.EmailAlerted; } else { limitStatus = LimitStatus.EmailAlertDisabled; } } } else { limitStatus = LimitStatus.Allowed; } } } } return(limitStatus); }
private void UpdateStatus(string cnicNumber) { if (string.IsNullOrEmpty(cnicNumber)) { this.btnCheckIn.Enabled = false; this.btnCheckOut.Enabled = false; this.tbxBlockedBy.ReadOnly = true; this.tbxBlockedReason.ReadOnly = true; this.tbxBlockedBy.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxBlockedReason.BackColor = System.Drawing.SystemColors.ButtonFace; this.lblVisitorStatus.Text = "Invalid User"; this.lblVisitorStatus.BackColor = Color.Red; this.btnBlock.Enabled = false; this.btnUnBlock.Enabled = false; return; } if (Form1.mLoggedInUser.IsAdmin) { this.btnBlock.Visible = true; this.btnUnBlock.Visible = true; this.tbxBlockedBy.ReadOnly = false; this.tbxBlockedReason.ReadOnly = false; this.tbxBlockedBy.BackColor = System.Drawing.Color.White; this.tbxBlockedReason.BackColor = System.Drawing.Color.White; } else { this.btnBlock.Visible = false; this.btnUnBlock.Visible = false; this.tbxBlockedBy.ReadOnly = true; this.tbxBlockedReason.ReadOnly = true; this.tbxBlockedBy.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxBlockedReason.BackColor = System.Drawing.SystemColors.ButtonFace; } this.mCNICNumber = cnicNumber; BlockedPersonInfo blockedPerson = null; bool blockedUser = false; if (this.mBlocks.Exists(blocked => blocked.Blocked && blocked.CNICNumber == this.mCNICNumber)) { blockedUser = true; blockedPerson = this.mBlocks.Find(blocked => blocked.Blocked && blocked.CNICNumber == this.mCNICNumber); this.UpdateLayoutForBlockedPerson(blockedPerson); } else { this.btnUnBlock.Enabled = false; this.tbxBlockedBy.Text = string.Empty; this.tbxBlockedReason.Text = string.Empty; this.lblVisitorStatus.Text = "Allowed"; this.lblVisitorStatus.BackColor = Color.Green; this.tbxBlockedBy.ReadOnly = false; this.tbxBlockedReason.ReadOnly = false; this.tbxBlockedBy.BackColor = System.Drawing.Color.White; this.tbxBlockedReason.BackColor = System.Drawing.Color.White; this.tbxUnBlockedBy.ReadOnly = true; this.tbxUnblockReason.ReadOnly = true; this.tbxUnBlockedBy.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxUnblockReason.BackColor = System.Drawing.SystemColors.ButtonFace; if (this.mBlocks.Count > 0) { BlockedPersonInfo lastBlockedInfo = this.mBlocks.Last(); this.tbxUnBlockedBy.Text = lastBlockedInfo.UnBlockedBy; this.tbxUnBlockTime.Text = lastBlockedInfo.UnBlockTime.ToString(); this.tbxUnblockReason.Text = lastBlockedInfo.UnBlockedReason; } } if (this.mCheckIns.Exists(checkedIn => checkedIn.CheckedIn && checkedIn.CNICNumber == this.mCNICNumber)) { CheckInAndOutInfo checkedInInfo = this.mCheckIns.Find(checkedIn => checkedIn.CheckedIn && checkedIn.CNICNumber == this.mCNICNumber); this.btnCheckIn.Enabled = false; this.btnCheckOut.Enabled = true && !blockedUser; this.tbxCheckInCardNumber.Text = checkedInInfo.CardNumber; this.tbxCheckInVehicleNumber.Text = checkedInInfo.VehicleNmuber; this.tbxCheckInDateTimeIn.Text = checkedInInfo.DateTimeIn.ToString(); this.tbxCheckInDateTimeOut.Text = DateTime.Now.ToString(); this.tbxCheckInCardNumber.ReadOnly = true; this.tbxCheckInVehicleNumber.ReadOnly = true; this.tbxCheckInCardNumber.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxCheckInVehicleNumber.BackColor = System.Drawing.SystemColors.ButtonFace; if (Form1.mLoggedInUser.IsAdmin) { AlertInfo chAlertInfos = (from alert in EFERTDbUtility.mEFERTDb.AlertInfos where alert != null && alert.CNICNumber == this.mCNICNumber select alert).FirstOrDefault(); bool alertDisabled = false; if (chAlertInfos != null) { alertDisabled = chAlertInfos.DisableAlert; } if (alertDisabled) { this.btnDisableAlerts.Visible = true; this.btnDisableAlerts.Text = "Enable Alert"; this.btnDisableAlerts.Tag = false; } else { this.btnDisableAlerts.Visible = true; this.btnDisableAlerts.Tag = true; } } } else { if (!blockedUser) { List <CategoryInfo> categories = new List <CategoryInfo>(); bool isCheckLimit = true; if (this.mCheckIns.Count > 0) { string blockinfo = CategoryBlockCriteria.No.ToString(); if (SearchForm.mIsPlant) { categories = (from cat in EFERTDbUtility.mEFERTDb.CategoryInfo where cat != null && cat.CategoryBlockCriteria == blockinfo && (cat.CategoryLocation == CategoryLocation.Plant.ToString() || cat.CategoryLocation == CategoryLocation.Any.ToString()) select cat).ToList(); } else { categories = (from cat in EFERTDbUtility.mEFERTDb.CategoryInfo where cat != null && cat.CategoryBlockCriteria == blockinfo && (cat.CategoryLocation == CategoryLocation.Colony.ToString() || cat.CategoryLocation == CategoryLocation.Any.ToString()) select cat).ToList(); } CheckInAndOutInfo last = this.mCheckIns.Last(); bool catExist = categories.Exists(cat => cat.CategoryName == last.Category); if (catExist) { isCheckLimit = !catExist; } } LimitStatus limitStatus = LimitStatus.Allowed; if (isCheckLimit) { limitStatus = EFERTDbUtility.CheckIfUserCheckedInLimitReached(this.mCheckIns, this.mBlocks); } if (limitStatus == LimitStatus.LimitReached) { blockedPerson = this.BlockPerson(EFERTDbUtility.CONST_SYSTEM_BLOCKED_BY, EFERTDbUtility.CONST_SYSTEM_LIMIT_REACHED_REASON); if (blockedPerson != null) { this.UpdateLayoutForBlockedPerson(blockedPerson); blockedUser = true; } //this.btnCheckIn.Enabled = false; //this.btnCheckOut.Enabled = false; //this.tbxBlockedBy.Text = "Admin"; //this.tbxBlockedReason.Text = "You have reached maximum limit of temporary check in."; //this.lblVisitorStatus.Text = "Blocked"; //this.lblVisitorStatus.BackColor = Color.Red; //this.btnBlock.Enabled = false; //this.tbxBlockedBy.ReadOnly = true; //this.tbxBlockedReason.ReadOnly = true; //this.tbxBlockedBy.BackColor = System.Drawing.SystemColors.ButtonFace; //this.tbxBlockedReason.BackColor = System.Drawing.SystemColors.ButtonFace; } else { if (limitStatus == LimitStatus.EmailAlerted) { if (Form1.mLoggedInUser.IsAdmin) { this.btnDisableAlerts.Visible = true; this.btnDisableAlerts.Tag = true; } } else if (limitStatus == LimitStatus.EmailAlertDisabled) { if (Form1.mLoggedInUser.IsAdmin) { this.btnDisableAlerts.Visible = true; this.btnDisableAlerts.Text = "Enable Alert"; this.btnDisableAlerts.Tag = false; } } this.btnCheckIn.Enabled = true && !blockedUser; this.btnCheckOut.Enabled = false; this.tbxCheckInDateTimeIn.Text = DateTime.Now.ToString(); } } } if (blockedUser) { this.tbxCheckInCardNumber.ReadOnly = true; this.tbxCheckInVehicleNumber.ReadOnly = true; this.tbxCheckInCardNumber.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxCheckInVehicleNumber.BackColor = System.Drawing.SystemColors.ButtonFace; BlockedPersonNotificationForm blockedForm = null; if (blockedPerson == null) { blockedForm = new BlockedPersonNotificationForm(this.mCardHolderInfo.FirstName, this.mCNICNumber); } else { blockedForm = new BlockedPersonNotificationForm(blockedPerson); } blockedForm.ShowDialog(this); } }