private void btnCheckOut_Click(object sender, EventArgs e) { if (this.mCheckIns.Exists(checkedOut => checkedOut.CheckedIn && checkedOut.CNICNumber == this.mCNICNumber)) { CheckInAndOutInfo checkedOutInfo = this.mCheckIns.Find(checkedOut => checkedOut.CheckedIn && checkedOut.CNICNumber == this.mCNICNumber); checkedOutInfo.CheckedIn = false; checkedOutInfo.DateTimeOut = Convert.ToDateTime(this.tbxCheckInDateTimeOut.Text); try { EFERTDbUtility.mEFERTDb.Entry(checkedOutInfo).State = System.Data.Entity.EntityState.Modified; EFERTDbUtility.mEFERTDb.SaveChanges(); } catch (Exception ex) { EFERTDbUtility.RollBack(); MessageBox.Show(this, "Some error occurred in returning card.\n\n" + EFERTDbUtility.GetInnerExceptionMessage(ex)); return; } this.btnCheckIn.Enabled = true; this.btnCheckOut.Enabled = false; this.Close(); } else { MessageBox.Show(this, "This user is not checked in."); } }
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 btnCheckIn_Click(object sender, EventArgs e) { string cardNumber = this.tbxCheckInCardNumber.Text; if (!this.tbxCnicNumber.MaskCompleted) { MessageBox.Show(this, "Please Enter correct CNIC NUMBER."); this.tbxCnicNumber.ReadOnly = false; this.tbxCnicNumber.BackColor = System.Drawing.Color.White; return; } bool validtated = EFERTDbUtility.ValidateInputs(new List <TextBox>() { this.tbxFirstName, this.tbxCheckInCardNumber }); if (validtated && this.cbxVFCategory.SelectedItem == null || string.IsNullOrEmpty(this.cbxVFCategory.SelectedItem.ToString().Trim())) { validtated = false; } if (!validtated) { MessageBox.Show(this, "Please fill mandatory fields first."); return; } bool isCardNotReturned = this.mCheckIns.Any(checkInInfo => checkInInfo.CheckedIn && checkInInfo.CardNumber == cardNumber); CCFTCentralDb.CCFTCentral ccftCentralDb = new CCFTCentralDb.CCFTCentral(); bool cardExist = ccftCentralDb.Cardholders.Any(card => card.LastName == cardNumber); if (cardExist && !isCardNotReturned) { var cardAlreadyIssued = (from checkin in EFERTDbUtility.mEFERTDb.CheckedInInfos where checkin != null && checkin.CheckedIn && checkin.CardNumber == cardNumber select new { checkin.CheckedIn, checkin.CNICNumber }).FirstOrDefault(); if (cardAlreadyIssued != null && cardAlreadyIssued.CheckedIn) { MessageBox.Show(this, "This card is already issue to the person with CNIC number: " + cardAlreadyIssued.CNICNumber); return; } if (this.mVisitor == null) { VisitorCardHolder visitor = new VisitorCardHolder(); visitor.CNICNumber = this.tbxCnicNumber.Text; visitor.Gender = this.cbxGender.SelectedItem == null ? string.Empty : this.cbxGender.SelectedItem as String; visitor.FirstName = this.tbxFirstName.Text; visitor.LastName = this.tbxLastName.Text; visitor.Address = this.tbxAddress.Text; visitor.PostCode = this.tbxPostCode.Text; visitor.City = this.tbxCity.Text; visitor.State = this.tbxState.Text; visitor.CompanyName = this.tbxCompanyName.Text; visitor.ContactNo = this.tbxPhoneNumber.Text; visitor.EmergencyContantPerson = this.tbxEmergencyContact.Text; visitor.EmergencyContantPersonNumber = this.tbxEmergencyContactNumber.Text; visitor.VisitorType = this.cbxVisitorType.SelectedItem == null ? string.Empty : this.cbxVisitorType.SelectedItem as String; visitor.IsOnPlant = SearchForm.mIsPlant; if (this.pbxSnapShot.Image != null) { visitor.Picture = EFERTDbUtility.ImageToByteArray(this.pbxSnapShot.Image); } if (this.mSchoolingStaff) { visitor.SchoolName = this.cbxSchoolCollege.SelectedItem == null ? string.Empty : this.cbxSchoolCollege.SelectedItem as String; } visitor.VisitorInfo = this.mVisitorInfo; EFERTDbUtility.mEFERTDb.Visitors.Add(visitor); //EFERTDbUtility.mEFERTDb.SaveChanges(); this.mVisitor = visitor; } CheckInAndOutInfo checkedInInfo = new CheckInAndOutInfo(); checkedInInfo.CheckInToPlant = SearchForm.mIsPlant; checkedInInfo.CheckInToPlant = !SearchForm.mIsPlant; checkedInInfo.FirstName = this.mVisitor.FirstName; checkedInInfo.Visitors = this.mVisitor; checkedInInfo.CNICNumber = this.mCNICNumber; checkedInInfo.CardNumber = this.tbxCheckInCardNumber.Text; checkedInInfo.VehicleNmuber = this.tbxCheckInVehicleNumber.Text; checkedInInfo.NoOfMaleGuest = this.nuNoOfMaleGuest.Value; checkedInInfo.NoOfFemaleGuest = this.nuNoOfFemaleGuest.Value; checkedInInfo.DurationOfStay = this.numCheckInDurationOfStay.Value; checkedInInfo.NoOfChildren = this.nuCheckInNoOfChildren.Value; checkedInInfo.AreaOfVisit = this.cbxAreaOfVisit.SelectedItem == null ? string.Empty : this.cbxAreaOfVisit.SelectedItem as String; checkedInInfo.HostName = this.tbxCheckInHostName.Text; checkedInInfo.DateTimeIn = Convert.ToDateTime(this.tbxCheckInDateTimeIn.Text); checkedInInfo.DateTimeOut = DateTime.MaxValue; checkedInInfo.CheckedIn = true; checkedInInfo.Category = this.mVisitorInfo; try { EFERTDbUtility.mEFERTDb.CheckedInInfos.Add(checkedInInfo); EFERTDbUtility.mEFERTDb.SaveChanges(); } catch (Exception ex) { EFERTDbUtility.RollBack(); MessageBox.Show(this, "Some error occurred in issuing card.\n\n" + EFERTDbUtility.GetInnerExceptionMessage(ex)); return; } this.btnCheckIn.Enabled = false; this.btnCheckOut.Enabled = true; this.Close(); } else { if (!cardExist) { MessageBox.Show(this, "Please enter valid card number."); } else if (isCardNotReturned) { MessageBox.Show(this, "Card is already issued to some one else."); } } }
private void UpdateStatus(string cnicNumber, bool isNew = true) { bool blockedUser = false; BlockedPersonInfo blockedPerson = null; 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; this.cbxVFCategory.Enabled = false; return; } if (Form1.mLoggedInUser.IsAdmin) { this.cbxVFCategory.Enabled = true; 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 { if (isNew) { this.cbxVFCategory.Enabled = true; } else { this.cbxVFCategory.Enabled = false; } 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; 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.nuNoOfMaleGuest.Value = checkedInInfo.NoOfMaleGuest; this.nuNoOfFemaleGuest.Value = checkedInInfo.NoOfFemaleGuest; this.numCheckInDurationOfStay.Value = checkedInInfo.DurationOfStay; this.nuCheckInNoOfChildren.Value = checkedInInfo.NoOfChildren; this.cbxAreaOfVisit.SelectedItem = checkedInInfo.AreaOfVisit; this.tbxCheckInHostName.Text = checkedInInfo.HostName; this.tbxCheckInDateTimeIn.Text = checkedInInfo.DateTimeIn.ToString(); this.tbxCheckInDateTimeOut.Text = DateTime.Now.ToString(); this.tbxCheckInCardNumber.ReadOnly = true; this.tbxCheckInVehicleNumber.ReadOnly = true; this.nuNoOfMaleGuest.ReadOnly = true; this.nuNoOfFemaleGuest.ReadOnly = true; this.numCheckInDurationOfStay.ReadOnly = true; this.nuCheckInNoOfChildren.ReadOnly = true; this.cbxAreaOfVisit.Enabled = false; this.tbxCheckInHostName.ReadOnly = true; this.tbxCheckInCardNumber.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxCheckInVehicleNumber.BackColor = System.Drawing.SystemColors.ButtonFace; this.nuNoOfMaleGuest.BackColor = System.Drawing.SystemColors.ButtonFace; this.nuNoOfFemaleGuest.BackColor = System.Drawing.SystemColors.ButtonFace; this.numCheckInDurationOfStay.BackColor = System.Drawing.SystemColors.ButtonFace; this.nuCheckInNoOfChildren.BackColor = System.Drawing.SystemColors.ButtonFace; this.tbxCheckInHostName.BackColor = System.Drawing.SystemColors.ButtonFace; } 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.mVisitor.FirstName, this.mCNICNumber); } else { blockedForm = new BlockedPersonNotificationForm(blockedPerson); } blockedForm.ShowDialog(this); } }
private void btnCheckIn_Click(object sender, EventArgs e) { string cardNumber = this.tbxCheckInCardNumber.Text; if (string.IsNullOrEmpty(cardNumber)) { MessageBox.Show(this, "Card number can not be empty."); return; } bool isCardNotReturned = this.mCheckIns.Any(checkInInfo => checkInInfo.CheckedIn && checkInInfo.CardNumber == cardNumber); bool cardExist = false; CCFTCentralDb.CCFTCentral ccftCentralDb = new CCFTCentralDb.CCFTCentral(); cardExist = ccftCentralDb.Cardholders.Any(card => card.LastName == cardNumber); CardHolderInfo cardHolderInfo = this.mCardHolderInfo; if (cardExist && !isCardNotReturned) { var cardAlreadyIssued = (from checkin in EFERTDbUtility.mEFERTDb.CheckedInInfos where checkin != null && checkin.CheckedIn && checkin.CardNumber == cardNumber select new { checkin.CheckedIn, checkin.CNICNumber }).FirstOrDefault(); if (cardAlreadyIssued != null && cardAlreadyIssued.CheckedIn) { MessageBox.Show(this, "This card is already issue to the person with CNIC number: " + cardAlreadyIssued.CNICNumber); return; } if (cardHolderInfo == null) { MessageBox.Show(this, "Unable to Issue Card. Some error occured in getting cardholder information."); return; } CheckInAndOutInfo checkedInInfo = new CheckInAndOutInfo(); checkedInInfo.CheckInToPlant = SearchForm.mIsPlant; checkedInInfo.CheckInToColony = !SearchForm.mIsPlant; checkedInInfo.FirstName = cardHolderInfo.FirstName; checkedInInfo.CardHolderInfos = cardHolderInfo; checkedInInfo.CNICNumber = this.mCNICNumber; checkedInInfo.CardNumber = cardNumber; checkedInInfo.VehicleNmuber = this.tbxCheckInVehicleNumber.Text; checkedInInfo.DateTimeIn = Convert.ToDateTime(this.tbxCheckInDateTimeIn.Text); checkedInInfo.DateTimeOut = DateTime.MaxValue; checkedInInfo.CheckedIn = true; try { EFERTDbUtility.mEFERTDb.CheckedInInfos.Add(checkedInInfo); EFERTDbUtility.mEFERTDb.SaveChanges(); } catch (Exception ex) { EFERTDbUtility.RollBack(); MessageBox.Show(this, "Some error occurred in issuing card.\n\n" + EFERTDbUtility.GetInnerExceptionMessage(ex)); return; } this.btnCheckIn.Enabled = false; this.btnCheckOut.Enabled = true; this.Close(); } else { if (!cardExist) { MessageBox.Show(this, "Please enter valid card number."); } else if (isCardNotReturned) { MessageBox.Show(this, "Card is already issued to some one else."); } } }
private void SearchCardHolderCore(string searchString, bool isNicNumber, bool isTempCard = false, bool isVisitorCard = false) { EFERTDbUtility.InitializeDatabases(false); CCFTCentral ccftCentral = EFERTDbUtility.mCCFTCentral; Cardholder cardHolder = null; CardHolderInfo cardHolderInfo = null; VisitorCardHolder visitor = null; DailyCardHolder dailyCardHolder = null; bool updatedCardExist = true; if (isNicNumber) { Task <Cardholder> cardHolderByNicTask = new Task <Cardholder>(() => { Cardholder cardHolderByNic = (from pds in ccftCentral.PersonalDataStrings where pds != null && pds.PersonalDataFieldID == 5051 && pds.Value != null && pds.Value == searchString select pds.Cardholder).FirstOrDefault(); return(cardHolderByNic); }); cardHolderByNicTask.Start(); cardHolderInfo = (from card in EFERTDbUtility.mEFERTDb.CardHolders where card != null && card.CNICNumber == searchString select card).FirstOrDefault(); if (cardHolderInfo == null) { cardHolder = cardHolderByNicTask.Result; if (cardHolder == null) { dailyCardHolder = (from daily in EFERTDbUtility.mEFERTDb.DailyCardHolders where daily != null && daily.CNICNumber == searchString select daily).FirstOrDefault(); if (dailyCardHolder == null) { visitor = (from visit in EFERTDbUtility.mEFERTDb.Visitors where visit != null && visit.CNICNumber == searchString select visit).FirstOrDefault(); } } } else { if (cardHolderInfo.IsTemp) { cardHolder = cardHolderByNicTask.Result; if (cardHolder == null) { updatedCardExist = false; } } } } else { Task <Cardholder> cardHolderByCardNumberTask = new Task <Cardholder>(() => { Cardholder cardHolderByCardNumber = (from c in ccftCentral.Cardholders where c != null && c.LastName == searchString select c).FirstOrDefault(); return(cardHolderByCardNumber); }); cardHolderByCardNumberTask.Start(); cardHolderInfo = (from card in EFERTDbUtility.mEFERTDb.CardHolders where card != null && card.CardNumber == searchString select card).FirstOrDefault(); if (cardHolderInfo == null) { CheckInAndOutInfo cardIssued = (from checkIn in EFERTDbUtility.mEFERTDb.CheckedInInfos where checkIn != null && checkIn.CheckedIn && checkIn.CardNumber == searchString select checkIn).FirstOrDefault(); if (cardIssued != null) { dailyCardHolder = cardIssued.DailyCardHolders; if (dailyCardHolder == null) { visitor = cardIssued.Visitors; if (visitor == null) { cardHolderInfo = cardIssued.CardHolderInfos; if (cardHolderInfo != null && cardHolderInfo.IsTemp) { cardHolder = (from pds in ccftCentral.PersonalDataStrings where pds != null && pds.PersonalDataFieldID == 5051 && pds.Value != null && pds.Value == cardIssued.CNICNumber select pds.Cardholder).FirstOrDefault(); if (cardHolder != null) { updatedCardExist = true; } else { updatedCardExist = false; } } } } } if (visitor == null && dailyCardHolder == null && cardHolderInfo == null) { if (!isTempCard && !isVisitorCard) { cardHolder = cardHolderByCardNumberTask.Result; } } if (visitor == null && dailyCardHolder == null && cardHolder == null && cardHolderInfo == null) { if (Form.ActiveForm != null) { bool found = false; if (Form.ActiveForm is VisitorForm) { found = true; (Form.ActiveForm as VisitorForm).SetCardNumber(searchString); } else if (Form.ActiveForm is PermanentChForm) { found = true; (Form.ActiveForm as PermanentChForm).SetCardNumber(searchString); } else if (Form.ActiveForm is ContractorChForm) { found = true; (Form.ActiveForm as ContractorChForm).SetCardNumber(searchString); } if (found) { return; } } if (isTempCard) { MessageBox.Show(this, "This temporary card is not issued to any person."); } else if (isVisitorCard) { MessageBox.Show(this, "This visitor card is not issued to any visitor."); } else { MessageBox.Show(this, "Cardholder with " + searchString + " card number is not found."); } return; } } //else //{ // if (!cardHolderInfo.GallagherCardHolder) // { // cardHolder = cardHolderByNicTask.Result; // if (cardHolder == null) // { // updatedCardExist = false; // } // } //} //bool isDigitOnly = this.IsDigitsOnly(searchString); //if (isDigitOnly) //{ //cardHolder = (from c in ccftCentral.Cardholders // where c != null && c.LastName == searchString // select c).FirstOrDefault(); //} //else //{ // cardHolder = (from c in ccftCentral.Cardholders // where c != null && c.FirstName == searchString // select c).FirstOrDefault(); //} } if (cardHolder == null && cardHolderInfo == null && visitor == null && dailyCardHolder == null) { ContractorChForm npchf = new ContractorChForm(searchString); npchf.ShowDialog(this); } else { if (cardHolderInfo != null && !cardHolderInfo.IsTemp) { string cadre = cardHolderInfo.Cadre == null ? "" : cardHolderInfo.Cadre.CadreName; bool isPermanent = cadre.ToLower() == "nmpt" || cadre.ToLower() == "mpt"; if (isPermanent) { PermanentChForm permanentForm = new PermanentChForm(cardHolderInfo); permanentForm.Show(); } else { ContractorChForm contractorForm = new ContractorChForm(cardHolderInfo); contractorForm.Show(); } } else if (cardHolder != null) { Dictionary <int, string> chPds = new Dictionary <int, string>(); foreach (PersonalDataString pds in cardHolder.PersonalDataStrings) { if (pds != null) { chPds.Add(pds.PersonalDataFieldID, pds.Value); } } string cadre = (from c in chPds where c.Key == 12952 && c.Value != null select c.Value).FirstOrDefault(); if (string.IsNullOrEmpty(cadre)) { MessageBox.Show(this, "No Cadre found."); } else { bool isPermanent = cadre.ToLower() == "nmpt" || cadre.ToLower() == "mpt"; if (isPermanent) { int? pNumber = cardHolder.PersonalDataIntegers == null || cardHolder.PersonalDataIntegers.Count == 0 ? null : cardHolder.PersonalDataIntegers.ElementAt(0).Value; string strPNumber = pNumber == null ? "P-Number not found." : pNumber.ToString(); DateTime?dateOfBirth = cardHolder.PersonalDataDates == null || cardHolder.PersonalDataDates.Count == 0 ? null : cardHolder.PersonalDataDates.ElementAt(0).Value; string strDOB = dateOfBirth == null ? "Date of birth not found." : dateOfBirth.ToString(); string bloodGroup = chPds.ContainsKey(5047) && chPds[5047] != null ? chPds[5047] : string.Empty; string CNICNumber = chPds.ContainsKey(5051) && chPds[5051] != null ? chPds[5051] : string.Empty; string crew = chPds.ContainsKey(12869) && chPds[12869] != null ? chPds[12869] : string.Empty; string department = chPds.ContainsKey(5043) && chPds[5043] != null ? chPds[5043] : string.Empty; string designation = chPds.ContainsKey(5042) && chPds[5042] != null ? chPds[5042] : string.Empty; string contactNumber = chPds.ContainsKey(5053) && chPds[5053] != null ? chPds[5053] : string.Empty; string section = chPds.ContainsKey(12951) && chPds[12951] != null ? chPds[12951] : string.Empty; int cardHolderId = cardHolder.FTItemID; string companyName = chPds.ContainsKey(5059) && chPds[5059] != null ? chPds[5059] : string.Empty; CadreInfo cadreInfo = (from c in EFERTDbUtility.mEFERTDb.Cadres where c != null && c.CadreName == cadre select c).FirstOrDefault() ?? new CadreInfo() { CadreName = cadre }; CrewInfo crewInfo = string.IsNullOrEmpty(crew) ? null : ((from c in EFERTDbUtility.mEFERTDb.Crews where c != null && c.CrewName == crew select c).FirstOrDefault() ?? new CrewInfo() { CrewName = crew }); DepartmentInfo departmentInfo = string.IsNullOrEmpty(department) ? null : ((from c in EFERTDbUtility.mEFERTDb.Departments where c != null && c.DepartmentName == department select c).FirstOrDefault() ?? new DepartmentInfo() { DepartmentName = department }); DesignationInfo designationInfo = string.IsNullOrEmpty(designation) ? null : ((from c in EFERTDbUtility.mEFERTDb.Designations where c != null && c.Designation == designation select c).FirstOrDefault() ?? new DesignationInfo() { Designation = designation }); SectionInfo sectionInfo = string.IsNullOrEmpty(section) ? null : ((from c in EFERTDbUtility.mEFERTDb.Sections where c != null && c.SectionName == section select c).FirstOrDefault() ?? new SectionInfo() { SectionName = section }); CompanyInfo companyInfo = string.IsNullOrEmpty(companyName) ? null : ((from c in EFERTDbUtility.mEFERTDb.Companies where c != null && c.CompanyName == companyName select c).FirstOrDefault() ?? new CompanyInfo() { CompanyName = companyName }); if (cardHolderInfo != null && cardHolderInfo.IsTemp) { cardHolderInfo.FTItemId = cardHolderId; cardHolderInfo.FirstName = cardHolder.FirstName; cardHolderInfo.LastName = cardHolder.LastName; cardHolderInfo.BloodGroup = string.IsNullOrEmpty(bloodGroup) ? null : bloodGroup; cardHolderInfo.CardNumber = cardHolder.LastName; cardHolderInfo.CNICNumber = string.IsNullOrEmpty(CNICNumber) ? null : CNICNumber; cardHolderInfo.EmergancyContactNumber = string.IsNullOrEmpty(contactNumber) ? null : contactNumber; cardHolderInfo.PNumber = pNumber == null ? null : pNumber.ToString(); cardHolderInfo.DateOfBirth = dateOfBirth == null ? null : dateOfBirth.ToString(); cardHolderInfo.IsTemp = false; setCarholderInfo(cardHolderInfo, departmentInfo, cadreInfo, crewInfo, designationInfo, sectionInfo, companyInfo); EFERTDbUtility.mEFERTDb.Entry(cardHolderInfo).State = System.Data.Entity.EntityState.Modified; } else { cardHolderInfo = new CardHolderInfo() { FTItemId = cardHolderId, FirstName = cardHolder.FirstName, LastName = cardHolder.LastName, BloodGroup = string.IsNullOrEmpty(bloodGroup) ? null : bloodGroup, CardNumber = cardHolder.LastName, CNICNumber = string.IsNullOrEmpty(CNICNumber) ? null : CNICNumber, EmergancyContactNumber = string.IsNullOrEmpty(contactNumber) ? null : contactNumber, PNumber = pNumber == null ? null : pNumber.ToString(), DateOfBirth = dateOfBirth == null ? null : dateOfBirth.ToString(), IsTemp = false }; setCarholderInfo(cardHolderInfo, departmentInfo, cadreInfo, crewInfo, designationInfo, sectionInfo, companyInfo); EFERTDbUtility.mEFERTDb.CardHolders.Add(cardHolderInfo); } EFERTDbUtility.mEFERTDb.SaveChanges(); PermanentChForm permanentForm = new PermanentChForm(cardHolderInfo); permanentForm.Show(); } else { string companyName = chPds.ContainsKey(5059) && chPds[5059] != null ? chPds[5059] : string.Empty; string CNICNumber = chPds.ContainsKey(5051) && chPds[5051] != null ? chPds[5051] : string.Empty; string department = chPds.ContainsKey(5043) && chPds[5043] != null ? chPds[5043] : string.Empty; string designation = chPds.ContainsKey(5042) && chPds[5042] != null ? chPds[5042] : string.Empty; string emergancyContactNumber = chPds.ContainsKey(5053) && chPds[5053] != null ? chPds[5053] : string.Empty; string section = chPds.ContainsKey(12951) && chPds[12951] != null ? chPds[12951] : string.Empty; string wONumber = chPds.ContainsKey(5344) && chPds[5344] != null ? chPds[5344] : string.Empty; int cardHolderId = cardHolder.FTItemID; CadreInfo cadreInfo = (from c in EFERTDbUtility.mEFERTDb.Cadres where c != null && c.CadreName == cadre select c).FirstOrDefault() ?? new CadreInfo() { CadreName = cadre }; CrewInfo crewInfo = null; DepartmentInfo departmentInfo = string.IsNullOrEmpty(department) ? null : ((from c in EFERTDbUtility.mEFERTDb.Departments where c != null && c.DepartmentName == department select c).FirstOrDefault() ?? new DepartmentInfo() { DepartmentName = department }); DesignationInfo designationInfo = string.IsNullOrEmpty(designation) ? null : ((from c in EFERTDbUtility.mEFERTDb.Designations where c != null && c.Designation == designation select c).FirstOrDefault() ?? new DesignationInfo() { Designation = designation }); SectionInfo sectionInfo = string.IsNullOrEmpty(section) ? null : ((from c in EFERTDbUtility.mEFERTDb.Sections where c != null && c.SectionName == section select c).FirstOrDefault() ?? new SectionInfo() { SectionName = section }); CompanyInfo companyInfo = string.IsNullOrEmpty(companyName) ? null : ((from c in EFERTDbUtility.mEFERTDb.Companies where c != null && c.CompanyName == companyName select c).FirstOrDefault() ?? new CompanyInfo() { CompanyName = companyName }); if (cardHolderInfo != null && cardHolderInfo.IsTemp) { cardHolderInfo.FTItemId = cardHolderId; cardHolderInfo.FirstName = cardHolder.FirstName; cardHolderInfo.LastName = cardHolder.LastName; cardHolderInfo.CardNumber = cardHolder.LastName; cardHolderInfo.CNICNumber = string.IsNullOrEmpty(CNICNumber) ? null : CNICNumber; cardHolderInfo.EmergancyContactNumber = string.IsNullOrEmpty(emergancyContactNumber) ? null : emergancyContactNumber; cardHolderInfo.WONumber = string.IsNullOrEmpty(wONumber) ? null : wONumber; cardHolderInfo.IsTemp = false; setCarholderInfo(cardHolderInfo, departmentInfo, cadreInfo, crewInfo, designationInfo, sectionInfo, companyInfo); EFERTDbUtility.mEFERTDb.Entry(cardHolderInfo).State = System.Data.Entity.EntityState.Modified; } else { cardHolderInfo = new CardHolderInfo() { FTItemId = cardHolderId, FirstName = cardHolder.FirstName, LastName = cardHolder.LastName, CardNumber = cardHolder.LastName, CNICNumber = string.IsNullOrEmpty(CNICNumber) ? null : CNICNumber, EmergancyContactNumber = string.IsNullOrEmpty(emergancyContactNumber) ? null : emergancyContactNumber, WONumber = string.IsNullOrEmpty(wONumber) ? null : wONumber, IsTemp = false }; setCarholderInfo(cardHolderInfo, departmentInfo, cadreInfo, crewInfo, designationInfo, sectionInfo, companyInfo); EFERTDbUtility.mEFERTDb.CardHolders.Add(cardHolderInfo); } EFERTDbUtility.mEFERTDb.SaveChanges(); ContractorChForm contractorForm = new ContractorChForm(cardHolderInfo); contractorForm.Show(); } } } else if (!updatedCardExist) { ContractorChForm contractorForm = new ContractorChForm(cardHolderInfo, true); contractorForm.Show(); } else if (visitor != null) { VisitorForm vistorForm = new VisitorForm(visitor); vistorForm.Show(); } else if (dailyCardHolder != null) { ContractorChForm contractorForm = new ContractorChForm(dailyCardHolder); contractorForm.Show(); } } }