Exemplo n.º 1
0
        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.");
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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.");
                }
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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.");
                }
            }
        }
Exemplo n.º 6
0
        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();
                }
            }
        }