コード例 #1
0
ファイル: Form4.cs プロジェクト: JGonzalezMata/Database
 private void btnCancel_Click(object sender, EventArgs e)
 {
     _personnel      = null;
     _secondaryData  = null;
     _departmentData = null;
     this.Close();
 }
コード例 #2
0
ファイル: Form3.cs プロジェクト: JGonzalezMata/Database
        private void DataBind()
        {
            var getPassportExpiration = "";
            var getVisaExpiration     = "";

            if (dtpPassportExp.Enabled)
            {
                getPassportExpiration = dtpPassportExp.Value.ToString("MM/yyyy");
            }
            if (dtpVisaExp.Enabled)
            {
                getVisaExpiration = dtpVisaExp.Value.ToString("MM/yyyy");
            }
            var secData = new SecondaryData()
            {
                HSBCAccount             = txtHSBC.Text,
                PassportNo              = txtPassport.Text,
                USVisaNo                = txtUSVISA.Text,
                BirthState              = txtBirthState.Text,
                InfonavitNo             = txtInfonavit.Text,
                PassportExpiration      = getPassportExpiration,
                USVisaExpiration        = getVisaExpiration,
                CurrentAddress          = txtCurrentAddress.Text,
                EmerContactRelationship = cmbEmerContactRelation.SelectedItem.ToString(),
                EmerContactName         = txtEmerName.Text,
                EmerContactPhone        = txtEmerNumb.Text,
                IMSSNo = txtIMSS.Text
            };

            _secondaryData = secData;
        }
コード例 #3
0
ファイル: Form3.cs プロジェクト: JGonzalezMata/Database
 public Form3(Form2 f2, Personnel getPersonnel)
 {
     InitializeComponent();
     f2.Close();
     _personnel     = new Personnel();
     _secondaryData = new SecondaryData();
     _personnel     = getPersonnel;
     DTP();
 }
コード例 #4
0
ファイル: Form4.cs プロジェクト: JGonzalezMata/Database
 public Form4(Form3 f3, Personnel getPersonnel, SecondaryData getSecondaryData)
 {
     InitializeComponent();
     f3.Close();
     _personnel      = new Personnel();
     _secondaryData  = new SecondaryData();
     _departmentData = new DepartmentData();
     _personnel      = getPersonnel;
     _secondaryData  = getSecondaryData;
 }
コード例 #5
0
ファイル: Form4.cs プロジェクト: JGonzalezMata/Database
        private void InputAllIntoBatch(Personnel personnel, SecondaryData secondaryData)
        {
            var _batch = new Batch
            {
                #region Batch

                PersonName     = personnel.PersonName,
                BirthDate      = personnel.BirthDate,
                EmployeeNo     = personnel.EmployeeNo,
                EducationLevel = personnel.EducationLevel,
                CarreerName    = personnel.CarreerName,
                PersonalMail   = personnel.PersonalMail,
                CURP           = personnel.CURP,
                INE            = personnel.INE,
                Gender         = personnel.Gender,
                Bloodtype      = personnel.Bloodtype,
                MaritalStatus  = personnel.MaritalStatus,
                RFC            = personnel.RFC,
                PhoneNumber    = personnel.PhoneNumber,
                UserImageRoute = personnel.UserImageRoute,

                HSBCAccount             = secondaryData.HSBCAccount,
                InfonavitNo             = secondaryData.InfonavitNo,
                PassportNo              = secondaryData.PassportNo,
                PassportExpiration      = secondaryData.PassportExpiration,
                USVisaNo                = secondaryData.USVisaNo,
                USVisaExpiration        = secondaryData.USVisaExpiration,
                BirthState              = secondaryData.BirthState,
                CurrentAddress          = secondaryData.CurrentAddress,
                EmerContactRelationship = secondaryData.EmerContactRelationship,
                EmerContactName         = secondaryData.EmerContactName,
                EmerContactPhone        = secondaryData.EmerContactPhone,
                IMSSNo = secondaryData.IMSSNo,

                Department     = txtDepartment.Text,
                Area           = txtArea.Text,
                Position       = txtPosition.Text,
                PaymentType    = txtPayment.Text,
                MailAccount    = txtCompanyMail.Text,
                BPMAccount     = txtBPMAcc.Text,
                ERPAccount     = txtERPAcc.Text,
                Transportation = cmbTransportation.SelectedItem.ToString(),
                PickupColony   = txtPickupColony.Text,
                PickupRoute    = txtRoute.Text,

                #endregion Batch
            };

            Form1.batch = _batch;
        }
コード例 #6
0
        private void Enrich(SecondaryData value)
        {
            using (log.Activity(m => m($"Enriching PageInfo")))
            {
                var pageInfoList = null as List <PageInfo>;
                using (log.Activity(m => m($"Filtering un-enriched {nameof(PageInfo)}")))
                {
                    pageInfoList = value.PageInfoList.PageInfo
                                   .Where(item => (!CanMatch(item)) && (CanEnrich(item)))
                                   .ToList();

                    log.Trace(m => m($"Ignored {nameof(PageInfo)} [{string.Join(",", value.PageInfoList.PageInfo.Except(pageInfoList).Select(item => item.MedMinedfacilityId))}]"));
                }

                if (!pageInfoList.Any())
                {
                    log.Trace(m => m($"No {nameof(PageInfo)} with missing required fields are found: exit"));
                    return;
                }

                var ordersNumberPerPageInfo = null as Dictionary <Guid, (List <string> PlacerOrderNumbers, List <IdInfo> IdInfos)>;
                using (log.Activity(m => m($"Getting {nameof(PageInfo)}.{nameof(PageInfo.Id)} to {nameof(PageInfo.EnrichedPlacerOrderNumbers)}[] association")))
                {
                    ordersNumberPerPageInfo = GetEnrichmentFromService(pageInfoList);
                }

                using (log.Activity(m => m($"Enriching {nameof(PageInfo)}")))
                {
                    foreach (var pageInfo in pageInfoList)
                    {
                        using (log.Activity(m => m($"Enriching {nameof(PageInfo)}[{pageInfo.Id}]")))
                        {
                            if (ordersNumberPerPageInfo.TryGetValue(pageInfo.Id, out (List <string> PlacerOrderNumbers, List <IdInfo> IdInfos)missingFields))
                            {
                                if (missingFields.PlacerOrderNumbers.Any())
                                {
                                    pageInfo.EnrichedPlacerOrderNumbers = missingFields.PlacerOrderNumbers;
                                    log.Trace(m => m($"Enriched {nameof(PageInfo)}[{pageInfo.Id}] with Order Numbers [{string.Join(",", pageInfo.EnrichedPlacerOrderNumbers)}]"));
                                }
                                if (missingFields.IdInfos.Any())
                                {
                                    pageInfo.EnrichedIdInfos = missingFields.IdInfos;
                                    log.Trace(m => m($"Enriched {nameof(PageInfo)}[{pageInfo.Id}] with IdInfos [{string.Join(",", pageInfo.EnrichedIdInfos.Select(item => $"{item.IdKind}:{item.Value}"))}]"));
                                }
                            }
コード例 #7
0
        public Tuple <bool, string> CheckEmergencyPhoneNumber(SecondaryData secondaryData)
        {
            string message = "";
            bool   isValid = true;

            if (secondaryData.EmerContactPhone.Length == 0)
            {
                message = "Phone number field cannot be empty";
                isValid = false;
            }
            else if (!ValidatePhoneNumber(secondaryData.EmerContactPhone))
            {
                message = "This phone number is invalid (does it contain letters?)";
                isValid = false;
            }
            else if (secondaryData.EmerContactPhone.Length > 10)
            {
                message = "Phone number length exceeds 10 numbers";
                isValid = false;
            }
            return(Tuple.Create(isValid, message));
        }
コード例 #8
0
        public Tuple <bool, string> CheckEmerContactName(SecondaryData secondaryData)
        {
            string message = "";
            bool   isValid = true;

            if (secondaryData.EmerContactName.Length == 0)
            {
                message = "Please type the person's name";
                isValid = false;
            }
            else if (!ValidateName(secondaryData.EmerContactName))
            {
                message = "This person's name is invalid (does it containg numbers?).";
                isValid = false;
            }
            else if (secondaryData.EmerContactName.Length > 255)
            {
                message = "This person's name is too long. \nI don't even know you managed to trigger this.";
                isValid = false;
            }
            return(Tuple.Create(isValid, message));
        }
コード例 #9
0
        public IHttpActionResult Post([FromBody] SecondaryData model)
        {
            using (log.Activity(m => m($"Executing Post by {Thread.CurrentPrincipal?.Identity?.Name}")))
            {
                using (log.Activity(m => m($"Validating Input")))
                {
                    if (!ModelState.IsValid)
                    {
                        log.Trace(m => m("Validation failed"));
                        return(BadRequest(ModelState));
                    }
                }

                using (log.Activity(m => m($"Executing Service Call")))
                {
                    try
                    {
                        service.Process(model);
                    }
                    catch (UnauthorizedAccessException e)
                    {
                        log.Warn(m => m("Authorization failed", e));
                        return(StatusCode(HttpStatusCode.Forbidden));
                    }
                    catch (Exception e)
                    {
                        log.Error(m => m("Process failed", e));
                        return(InternalServerError(e));
                    }
                }

                var value = null as object;
                using (log.Activity(m => m($"Formatting Result")))
                {
                    try
                    {
                        value = new
                        {
                            PageInfoList = new
                            {
                                PageInfo = model.PageInfoList.PageInfo
                                           //Filter elements without alerts
                                           .Where(item => item.MedMinedAlert != null)
                                           .Select(item => new {
                                    item.Id,
                                    item.MedMinedAlert
                                }).ToArray()
                            }
                        };
                    }
                    catch (Exception e)
                    {
                        log.Error(m => m("Formatting failed", e));
                        return(InternalServerError(e));
                    }
                }

                log.Info(m => m($"Executing Post by {Thread.CurrentPrincipal?.Identity?.Name} succeeded"));

                return(Ok(value));
            }
        }
コード例 #10
0
        private void Cache(SecondaryData value)
        {
            using (log.Activity(m => m($"Caching Alerts")))
            {
                var facilityKeys = null as int[];
                using (log.Activity(m => m($"Lookup for {nameof(PageInfo)}.{nameof(PageInfo.MedMinedfacilityId)}")))
                {
                    facilityKeys = value
                                   .PageInfoList
                                   .PageInfo
                                   .Select(item => item.MedMinedfacilityId)
                                   .Distinct()
                                   .Select(item => Int32.Parse(item))
                                   .Where(item => GetAlertsFromCache(item) == null)
                                   .ToArray();
                    log.Trace(m => m($"Found facilityKeys:[{string.Join(",", facilityKeys)}]"));
                }

                if (!facilityKeys.Any())
                {
                    log.Trace(m => m($"No uncached {nameof(facilityKeys)} found: exit"));
                    return;
                }

                var alerts = null as List <Alert>;
                using (log.Activity(m => m($"Loading {nameof(Alert)} from service")))
                {
                    alerts = GetAlertsFromService(facilityKeys);
                    log.Trace(m => m($"Found {nameof(Alert)}:[{string.Join(",", alerts.Select(item => item.alert_id))}]"));
                }
                if (!alerts.Any())
                {
                    log.Trace(m => m($"No {nameof(Alert)} found: exit"));
                    return;
                }

                var cacheItems = null as Dictionary <int, List <Alert> >;
                using (log.Activity(m => m($"Prepare {nameof(cacheItems)}")))
                {
                    //prepareForCache
                    cacheItems = alerts
                                 .GroupBy(item => item.facility_id)
                                 .ToDictionary(item => item.Key, item => item.ToList());

                    //TODO: KB: Shold we trace results?
                    log.Trace(m => m($"Cache entires are prepared"));
                }

                if (!cacheItems.Keys.Any())
                {
                    log.Trace(m => m($"No {nameof(cacheItems)} found: exit"));
                    return;
                }

                using (log.Activity(m => m($"Cache {nameof(cacheItems)}")))
                {
                    foreach (var item in cacheItems)
                    {
                        SetAlertsToCache(item.Key, item.Value);
                    }
                }
            }
        }
コード例 #11
0
        public void Process(SecondaryData value)
        {
            value = value ?? throw new ArgumentNullException(nameof(value));

            using (log.Activity(m => m($"Process {nameof(SecondaryData)} by {Thread.CurrentPrincipal?.Identity?.Name}")))
            {
                using (log.Activity(m => m("Preparing PageInfo and Cache")))
                {
                    try
                    {
                        var refreshCacheTask   = Task.Run(() => Cache(value));
                        var enrichPageInfoTask = Task.Run(() => Enrich(value));
                        Task.WaitAll(refreshCacheTask, enrichPageInfoTask);
                    }
                    catch (Exception e)
                    {
                        log.Error($"Preparing PageInfo and Cache Error", e);
                        throw;
                    }
                }

                var pageInfoList = null as List <PageInfo>;
                using (log.Activity(m => m($"Filtering {nameof(PageInfo)} that cannot be matched")))
                {
                    pageInfoList = value.PageInfoList.PageInfo
                                   .Where(item => CanMatch(item))
                                   .ToList();

                    log.Trace(m => m($"Ignored {nameof(PageInfo)} [{string.Join(",", value.PageInfoList.PageInfo.Except(pageInfoList).Select(item => item.MedMinedfacilityId))}]"));
                }

                var alertList = null as List <Alert>;
                using (log.Activity(m => m($"Get {nameof(Alert)} from Cache")))
                {
                    alertList = pageInfoList
                                .Select(item => int.Parse(item.MedMinedfacilityId))
                                .Distinct()
                                .SelectMany(item => GetAlertsFromCache(item) ?? Enumerable.Empty <Alert>())
                                .ToList();

                    log.Trace(m => m($"Found {nameof(Alert)} for {nameof(Alert.facility_id)} [{string.Join(",", alertList.Select(item => item.facility_id).Distinct())}]"));
                }

                using (log.Activity(m => m($"Matching {nameof(PageInfo)} to {nameof(Alert)}")))
                {
                    var pageInfoAlerts = pageInfoList.Join(alertList,
                                                           (pageInfo) => pageInfo.MedMinedfacilityId,
                                                           (alert) => alert.facility_id.ToString(),
                                                           (pageInfo, alert) => Tuple.Create(pageInfo, alert));

                    foreach (var pageInfoAlert in pageInfoAlerts)
                    {
                        var pageInfo = pageInfoAlert.Item1;
                        var alert    = pageInfoAlert.Item2;

                        var isMatched = default(bool);
                        using (log.Activity(m => m($"Matching {nameof(PageInfo)}[{pageInfo.Id}] to {nameof(Alert)}[{alert.alert_id}]")))
                        {
                            isMatched = Match(pageInfo, alert);
                            log.Trace(m => m($"Match" + (isMatched ? " " : " not ") + $"found for {nameof(PageInfo)}[{pageInfo.Id}] to {nameof(Alert)}[{alert.alert_id}]"));
                        }

                        if (isMatched)
                        {
                            using (log.Activity(m => m($"Adding {nameof(Alert)}[{alert.alert_id}] to {nameof(PageInfo)}[{pageInfo.Id}].{nameof(PageInfo.MedMinedAlert)}")))
                            {
                                Fill(pageInfo, alert);
                                log.Trace(m => m($"Added {nameof(Alert)}[{alert.alert_id}] to {nameof(PageInfo)}[{pageInfo.Id}].{nameof(PageInfo.MedMinedAlert)}"));
                            }
                        }
                    }
                }

                log.Info(m => m($"Processed {nameof(SecondaryData)} by {Thread.CurrentPrincipal?.Identity?.Name}"));
            }
        }