コード例 #1
0
        public FirstAlertReportPresenter(IFirstAlertReportView view)
        {
            _view = view;

            _model = new FirstAlertModel();
            _settingsModel = new SettingsModel();
        }
コード例 #2
0
        /// <summary>
        /// Executes the service process to check for delivery Confirmation
        /// </summary>
        /// <returns>True if process ran OK, False if there was an error</returns>
        public bool DeliveryServiceWork()
        {
            try
            {
                string emailAccount = string.Empty;
                string emailPassword = string.Empty;
                string emailDomain = string.Empty;

                SettingsModel model = new SettingsModel(_unitOfWork);

                string[] emailConfiguration = model.GetEmailConfiguration();
                emailAccount = emailConfiguration[0];
                emailPassword = emailConfiguration[1];
                emailDomain = emailConfiguration[2];

                using (mailUtility = new MailUtility(emailAccount, emailPassword, emailDomain))
                {
                    List<int> deliveredList = mailUtility.getEmailDeliveryConfirmation();
                    List<int> nonDeliveredList = mailUtility.GetEmailNonDeliveryConfirmation();

                    // Gets the list of pendingl emails
                    IList<CS_Email> DeliveredEmails = ListEmailsById(deliveredList);
                    foreach (CS_Email email in DeliveredEmails)
                    {
                        try
                        {
                            UpdateStatusEmail(email, Globals.EmailService.Status.ConfirmationReceived);
                        }
                        catch (Exception ex)
                        {
                            Logger.Write(string.Format("An error has ocurred while trying to update the Email with ID {0}!\n{1}\n{2}", email.ID, ex.InnerException, ex.StackTrace));
                        }
                    }

                    // Gets the list of nonDelivered emails
                    IList<CS_Email> nonDeliveredEmails = ListEmailsById(nonDeliveredList);
                    foreach (CS_Email email in nonDeliveredEmails)
                    {
                        try
                        {
                            UpdateStatusEmail(email, Globals.EmailService.Status.Error);
                        }
                        catch (Exception ex)
                        {
                            Logger.Write(string.Format("An error has ocurred while trying to update the Email with ID {0}!\n{1}\n{2}", email.ID, ex.InnerException, ex.StackTrace));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("An error has ocurred while trying to confirm de delivery of the Emails!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                // This process will not send any emails if there's an error, because it might be an exchange server problem

                return false;
            }

            return true;
        }
コード例 #3
0
 public void TestUpdateNonJobNumber()
 {
     using (settingsModel = new SettingsModel(new FakeUnitOfWork()))
     {
         int lastNonJobNumber = settingsModel.GetLastNonJobNumber();
         settingsModel.UpdateLastNonJobNumber(lastNonJobNumber + 1);
         Assert.AreEqual<int>(settingsModel.GetLastNonJobNumber(), lastNonJobNumber + 1);
     }
 }
コード例 #4
0
        /// <summary>
        /// Service logic method
        /// </summary>
        /// <param name="arg"></param>
        private void DoWork(object arg)
        {
            for (; ; )
            {
                if (dynamicsImportStop.WaitOne(20000))
                    return;
                try
                {
                    CustomerModel customerModel = new CustomerModel();
                    customerModel.ServiceWork();
                }
                catch (Exception ex)
                {
                    SettingsModel settings = new SettingsModel();
                    Logger.Write(string.Format("An error has ocurred while running the Dynamics Import Service!\n{0}\n{1}", ex.Message, ex.StackTrace));

                    StringBuilder mailError = new StringBuilder();
                    mailError.AppendLine(string.Format("An error has ocurred while running the Dynamics Import Service!\n{0}\n{1}", ex.Message, ex.StackTrace));
                    //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "Dynamics Import Service - Error occured on Contact Information", false, null);
                }
                //Logger.Write("Test log Service");
            }
        }
コード例 #5
0
        /// <summary>
        /// Executes the service process to send emails
        /// </summary>
        /// <returns>True if process ran OK, False if there was an error</returns>
        public bool EmailServiceWork()
        {
            try
            {
                string emailAccount = string.Empty;
                string emailPassword = string.Empty;
                string emailDomain = string.Empty;
                SettingsModel model = new SettingsModel(_unitOfWork);

                string[] emailConfiguration = model.GetEmailConfiguration();
                emailAccount = emailConfiguration[0];
                emailPassword = emailConfiguration[1];
                emailDomain = emailConfiguration[2];

                using (mailUtility = new MailUtility(emailAccount, emailPassword, emailDomain))
                {

                    // Gets the list of pendingl emails
                    IList<CS_Email> pendingEmails = ListAllPendingEmails();
                    foreach (CS_Email email in pendingEmails)
                    {
                        try
                        {
                            bool emailed = mailUtility.SendEmail(email.Subject, email.Body, email.Receipts, "", email.ID);

                            if (emailed)
                                UpdateStatusEmail(email, Globals.EmailService.Status.Sent);
                        }
                        catch (Exception ex)
                        {
                            Logger.Write(string.Format("An error has ocurred while trying to send the Email with ID {0}!\n{1}\n{2}", email.ID, ex.InnerException, ex.StackTrace));
                            UpdateStatusEmail(email, Globals.EmailService.Status.Error);
                        }
                    }
                }

                return true;
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("An error has ocurred while trying to send the Emails!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                // This process will not send any emails if there's an error, because it might be an exchange server problem

                return false;
            }
        }
コード例 #6
0
 /// <summary>
 /// Metod that intances all attribute objects
 /// </summary>
 private void InstanceObjects()
 {
     _firstAlertRepository = new EFRepository<CS_FirstAlert> { UnitOfWork = _unitOfWork };
     _firstAlertPersonRepository = new EFRepository<CS_FirstAlertPerson> { UnitOfWork = _unitOfWork };
     _firstAlertVehicleRepository = new EFRepository<CS_FirstAlertVehicle> { UnitOfWork = _unitOfWork };
     _firstAlertDivisionRepository = new EFRepository<CS_FirstAlertDivision> { UnitOfWork = _unitOfWork };
     _callLogRepository = new EFRepository<CS_CallLog> { UnitOfWork = _unitOfWork };
     _settingsModel = new SettingsModel(_unitOfWork);
     _callCriteriaModel = new CallCriteriaModel(_unitOfWork);
     _callLogResourceRepository = new EFRepository<CS_CallLogResource> { UnitOfWork = _unitOfWork };
     _callLogCallCriteriaEmailRepository = new EFRepository<CS_CallLogCallCriteriaEmail> { UnitOfWork = _unitOfWork };
     _firstAlertTypeRepository = new EFRepository<CS_FirstAlertType> { UnitOfWork = _unitOfWork };
     _firstAlertFirstAlertTypeRepository = new EFRepository<CS_FirstAlertFirstAlertType> { UnitOfWork = _unitOfWork };
     _firstAlertContactPersonalRepository = new EFRepository<CS_FirstAlertContactPersonal> { UnitOfWork = _unitOfWork };
     _firstAlertReportRepository = new EFRepository<CS_View_FirstAlertReport> { UnitOfWork = _unitOfWork };
     _firstAlertReportHulcherVehicleRepository = new EFRepository<CS_View_FirstAlertReportHulcherVehicles> { UnitOfWork = _unitOfWork };
     _firstAlertReportOtherVehicleRepository = new EFRepository<CS_View_FirstAlertReportOtherVehicle> { UnitOfWork = _unitOfWork };
     _firstAlertReportContactPersonalViewRepository = new EFRepository<CS_View_FirstAlertReportContactPersonal> { UnitOfWork = _unitOfWork };
 }
コード例 #7
0
        /// <summary>
        /// Dispose all objects that are no longer needed
        /// </summary>
        public void Dispose()
        {
            _firstAlertRepository = null;
            _firstAlertPersonRepository = null;
            _firstAlertVehicleRepository = null;
            _firstAlertDivisionRepository = null;
            _callLogRepository = null;
            _callLogResourceRepository = null;
            _callLogCallCriteriaEmailRepository = null;
            _firstAlertTypeRepository = null;
            _firstAlertFirstAlertTypeRepository = null;

            _settingsModel.Dispose();
            _settingsModel = null;
            _callCriteriaModel.Dispose();
            _callCriteriaModel = null;

            _unitOfWork.Dispose();
            _unitOfWork = null;
        }
コード例 #8
0
        private void InstanceObjects()
        {
            _jobRepository = new CachedRepository<CS_Job>();
            _jobRepository.UnitOfWork = _unitOfWork;

            _jobStatusRepository = new CachedRepository<CS_JobStatus>();
            _jobStatusRepository.UnitOfWork = _unitOfWork;

            _jobDivisionRepository = new EFRepository<CS_JobDivision>();
            _jobDivisionRepository.UnitOfWork = _unitOfWork;

            _priceTypeRepository = new CachedRepository<CS_PriceType>();
            _priceTypeRepository.UnitOfWork = _unitOfWork;

            _jobCategoryRepository = new CachedRepository<CS_JobCategory>();
            _jobCategoryRepository.UnitOfWork = _unitOfWork;

            _jobTypeRepository = new CachedRepository<CS_JobType>();
            _jobTypeRepository.UnitOfWork = _unitOfWork;

            _jobActionRepository = new CachedRepository<CS_JobAction>();
            _jobActionRepository.UnitOfWork = _unitOfWork;

            _lostJobReasonRepository = new CachedRepository<CS_LostJobReason>();
            _lostJobReasonRepository.UnitOfWork = _unitOfWork;

            _competitorRepository = new EFRepository<CS_Competitor>();
            _competitorRepository.UnitOfWork = _unitOfWork;

            _frequencyRepository = new CachedRepository<CS_Frequency>();
            _frequencyRepository.UnitOfWork = _unitOfWork;

            _customerInfoRepository = new EFRepository<CS_CustomerInfo>();
            _customerInfoRepository.UnitOfWork = _unitOfWork;

            _jobDescriptionRepository = new EFRepository<CS_JobDescription>();
            _jobDescriptionRepository.UnitOfWork = _unitOfWork;

            _scopeOfWorkRepository = new EFRepository<CS_ScopeOfWork>();
            _scopeOfWorkRepository.UnitOfWork = _unitOfWork;

            _locationInfoRepository = new EFRepository<CS_LocationInfo>();
            _locationInfoRepository.UnitOfWork = _unitOfWork;

            _jobPhotoReportRepository = new EFRepository<CS_JobPhotoReport>();
            _jobPhotoReportRepository.UnitOfWork = _unitOfWork;

            _presetInfoRepository = new EFRepository<CS_PresetInfo>();
            _presetInfoRepository.UnitOfWork = _unitOfWork;

            _lostJobInfoRepository = new EFRepository<CS_LostJobInfo>();
            _lostJobInfoRepository.UnitOfWork = _unitOfWork;

            _specialPricingRepository = new EFRepository<CS_SpecialPricing>();
            _specialPricingRepository.UnitOfWork = _unitOfWork;

            _jobInfoRepository = new EFRepository<CS_JobInfo>();
            _jobInfoRepository.UnitOfWork = _unitOfWork;

            _jobStatusHistoryRepository = new EFRepository<CS_Job_JobStatus>();
            _jobStatusHistoryRepository.UnitOfWork = _unitOfWork;

            _jobPermitRepository = new EFRepository<CS_JobPermit>();
            _jobPermitRepository.UnitOfWork = _unitOfWork;

            _divisionRepository = new EFRepository<CS_Division>();
            _divisionRepository.UnitOfWork = _unitOfWork;

            _employeeRepository = new EFRepository<CS_Employee>();
            _employeeRepository.UnitOfWork = _unitOfWork;

            _customerRepository = new EFRepository<CS_Customer>();
            _customerRepository.UnitOfWork = _unitOfWork;

            _cityRepository = new EFRepository<CS_City>();
            _cityRepository.UnitOfWork = _unitOfWork;

            _stateRepository = new EFRepository<CS_State>();
            _stateRepository.UnitOfWork = _unitOfWork;

            _countryRepository = new EFRepository<CS_Country>();
            _countryRepository.UnitOfWork = _unitOfWork;

            _zipCodeRepository = new EFRepository<CS_ZipCode>();
            _zipCodeRepository.UnitOfWork = _unitOfWork;

            _contactRepository = new EFRepository<CS_Contact>();
            _contactRepository.UnitOfWork = _unitOfWork;

            _callLogRepository = new EFRepository<CS_CallLog>();
            _callLogRepository.UnitOfWork = _unitOfWork;

            _jobPermitTypeRepository = new CachedRepository<CS_JobPermitType>();
            _jobPermitTypeRepository.UnitOfWork = _unitOfWork;

            _jobSummaryRepository = new EFRepository<CS_View_JobSummary>();
            _jobSummaryRepository.UnitOfWork = _unitOfWork;

            _callLogResourceRepository = new EFRepository<CS_CallLogResource>();
            _callLogResourceRepository.UnitOfWork = _unitOfWork;

            _callLogCallCriteriaEmailRepository = new EFRepository<CS_CallLogCallCriteriaEmail>();
            _callLogCallCriteriaEmailRepository.UnitOfWork = _unitOfWork;

            _turnoverActiveReportRepository = new EFRepository<CS_View_TurnoverActiveReport>();
            _turnoverActiveReportRepository.UnitOfWork = _unitOfWork;

            _turnoverNonActiveReportRepository = new EFRepository<CS_View_TurnoverNonActiveReport>();
            _turnoverNonActiveReportRepository.UnitOfWork = _unitOfWork;

            _jobLocalEquipmentTypeRepository = new EFRepository<CS_Job_LocalEquipmentType>();
            _jobLocalEquipmentTypeRepository.UnitOfWork = _unitOfWork;

            _settingsModel = new SettingsModel(_unitOfWork);
            _emailModel = new EmailModel(_unitOfWork);
            _callCriteriaModel = new CallCriteriaModel(_unitOfWork);

            _mailList = new List<CS_ScopeOfWork>();
            _divisionList = new List<CS_JobDivision>();

            _mailScope = new StringBuilder();
            _mailBillingBuilder = new StringBuilder();

            _jobDataRepository = new EFRepository<CS_View_GetJobData>();
            _jobDataRepository.UnitOfWork = _unitOfWork;

            _jobLocalEquipmentTypeRepository = new EFRepository<CS_Job_LocalEquipmentType>();
            _jobLocalEquipmentTypeRepository.UnitOfWork = _unitOfWork;

            _projectCalendarAllocationRepository = new EFRepository<CS_View_ProjectCalendar_Allocation>();
            _projectCalendarAllocationRepository.UnitOfWork = _unitOfWork;

            _projectCalendarReservedRepository = new EFRepository<CS_View_ProjectCalendar_Reserved>();
            _projectCalendarReservedRepository.UnitOfWork = _unitOfWork;

            _projectCalendarCallLogRepository = new EFRepository<CS_View_ProjectCalendar_CallLog>();
            _projectCalendarCallLogRepository.UnitOfWork = _unitOfWork;
        }
コード例 #9
0
        /// <summary>
        /// Fills the initial values of the screen
        /// </summary>
        public void LoadPage()
        {
            try
            {
                using (_dashboardViewModel = new DashboardViewModel(_view))
                {
                    _dashboardViewModel.LoadPage();
                    _dashboardViewModel.FilterJobSummary();
                }
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("There was an error while trying to Load Page Information!\n{0}\n{1}", ex.Message, ex.StackTrace));
                _view.DisplayMessage("There was an error while trying to Load Page Information (Presenter - LoadPage Method).", false);
            }

            try
            {
                using (_settingsModel = new SettingsModel())
                {
                    _view.DashboardRefreshRate = _settingsModel.GetDashboardRefreshRate();
                }
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("There was an error while trying to get the Refresh Rate information!\n{0}\n{1}", ex.Message, ex.StackTrace));
                _view.DisplayMessage("There was an error while trying to Refresh Rate information.", false);
            }
        }
コード例 #10
0
        public ReportMasterPagePresenter(IReportMasterPageView view)
        {
            _view = view;

            _settingsModel = new SettingsModel();
        }
コード例 #11
0
        /// <summary>
        /// Dispose all objects that are no longer needed
        /// </summary>
        public void Dispose()
        {
            _equipmentInfoRepository = null;
            _equipmentRepository = null;
            _equipmentTypeRepository = null;
            _viewReserveEquipmentRepository = null;
            _conflictedCombosRepository = null;
            _equipmentPermitEmailRepository = null;
            _resourceRepository = null;

            if (null != _settingsModel)
            {
                _settingsModel.Dispose();
                _settingsModel = null;
            }

            if (null != _locationModel)
            {
                _locationModel.Dispose();
                _locationModel = null;
            }

            if (null != _emailModel)
            {
                _emailModel.Dispose();
                _emailModel = null;
            }

            if (null != _callLogModel)
            {
                _callLogModel.Dispose();
                _callLogModel = null;
            }

            _unitOfWork.Dispose();
            _unitOfWork = null;
        }
コード例 #12
0
        /// <summary>
        /// Sends the email notification for the permit team
        /// </summary>
        /// <param name="equipmentPermitId">job id</param>
        public IList<CS_EquipmentPermitEmail> SendNotificationForPermitTeam(IList<CS_EquipmentPermit> expiredPermits)
        {
            _settingsModel = new SettingsModel();

            try
            {
                IList<CS_EquipmentPermit> expiredLicenses = expiredPermits.Distinct(new Globals.EmailService.CS_EquipmentPermit_Comparer()).ToList();

                IList<CS_State> states = new List<CS_State>();
                using (_locationModel = new LocationModel())
                {
                    states = _locationModel.ListAllStates();
                }

                IList<CS_EquipmentPermitEmail> returnList = new List<CS_EquipmentPermitEmail>();

                for (int i = 0; i < expiredLicenses.Count; i++)
                {
                    CS_EquipmentPermit license = expiredLicenses[i];
                    IList<CS_EquipmentPermit> expiredEquipments = expiredPermits.Where(e => e.LicenseNumber == license.LicenseNumber && e.Code == license.Code).ToList();
                    IList<CS_Email> emails = new List<CS_Email>();

                    //Body
                    string body = GenerateEmailBodyForPermitTeam(license, expiredEquipments, states);

                    //List receipts
                    string receipts = _settingsModel.GetPermitTeamEmails();

                    //Subject
                    string subject = GenerateEmailSubjectEstimationTeam(license, states);

                    if (!string.IsNullOrEmpty(receipts))
                    {
                        using (_emailModel = new EmailModel())
                        {
                            emails = _emailModel.SaveEmailList(receipts, subject, body, "System", Globals.Security.SystemEmployeeID);
                        }
                    }

                    for (int j = 0; j < expiredEquipments.Count; j++)
                    {
                        CS_EquipmentPermit equipmentPermit = expiredEquipments[j];
                        for (int h = 0; h < emails.Count; h++)
                        {
                            CS_Email email = emails[h];
                            returnList.Add
                                (
                                    new CS_EquipmentPermitEmail()
                                    {
                                        EmailID = email.ID,
                                        EquipmentPermitID = equipmentPermit.Id,
                                        CreatedBy = "System",
                                        CreationDate = email.CreationDate,
                                        CreationID = Globals.Security.SystemEmployeeID,
                                        ModifiedBy = "System",
                                        ModificationDate = email.CreationDate,
                                        ModificationID = Globals.Security.SystemEmployeeID,
                                        Active = true
                                    }
                                );
                        }
                    }
                }

                return returnList;
            }
            catch (Exception ex)
            {
                throw new Exception("There was an error sending the email notification for the Permit Team.", ex);
            }
        }
コード例 #13
0
        /// <summary>
        /// Sends the request Customer email
        /// </summary>
        /// <param name="emailBody">Email body</param>
        /// <param name="resend">Indicates if it's a new attempt of sending the request (TRUE) or it's the first attempt (FALSE)</param>
        /// <param name="cancel">Indicates if it's a new attempt of cancelling the request (TRUE) or it's the first attempt (FALSE)</param>
        /// <param name="customerNumber">If it's an update request, this field will have the Master Customer ID, if not it will be null</param>
        /// <param name="username">Username that made the request</param>
        private void SendCustomerRequestEmail(string emailBody, bool resend, bool cancel, string customerNumber, string username)
        {
            string subject = "New Company Request";
            if (resend)
                subject += " (RESEND)";
            if (cancel)
                subject += " (CANCEL)";
            if (!string.IsNullOrEmpty(customerNumber))
                subject += " - Master ID: " + customerNumber;

            string[] receipts = null;
            SettingsModel settingsModel = new SettingsModel(_unitOfWork);
            string emails = settingsModel.GetCustomerRequestEmails();
            if (!string.IsNullOrEmpty(emails))
                receipts = emails.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

            if (null != receipts)
            {
                EmailModel emailModel = new EmailModel(_unitOfWork);
                for (int i = 0; i < receipts.Length; i++)
                {
                    emailModel.SaveEmail(receipts[i], subject, emailBody, username, null);
                }
            }
        }
コード例 #14
0
        private bool UpdateCustomers()
        {
            try
            {
                using (SettingsModel settings = new SettingsModel())
                {
                    // Bulk Copying Divisions from IVantage
                    CS_CustomerRepository customerRep = new CS_CustomerRepository(_customerRepository, _customerRepository.UnitOfWork);
                    customerRep.BulkCopyAllCustomers(DynamicsIntegration.Singleton.ListAllCustomers(settings.GetLastUpdateCustomer()));

                    //// Run import tool
                    customerRep.UpdateFromIntegration();

                    return true;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #15
0
        public bool ServiceWork()
        {
            using (SettingsModel settings = new SettingsModel())
            {
                bool succeded = true;

                try
                {
                    UpdateCustomers();
                }
                catch (Exception ex)
                {
                    //Logger.Write(string.Format("An error has ocurred while trying to import the Customer information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                    StringBuilder mailError = new StringBuilder();

                    mailError.AppendLine(string.Format("An Error Ocurred when importing the Customer Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                    //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "Dynamics Import Service - Error occured on Customer Information", false, null);

                    return false;
                }

                try
                {
                    UpdateContracts();
                }
                catch (Exception ex)
                {
                    //Logger.Write(string.Format("An error has ocurred while trying to import the Contract information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                    StringBuilder mailError = new StringBuilder();

                    mailError.AppendLine(string.Format("An Error Ocurred when importing the Contract Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                    //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "Dynamics Import Service - Error occured on Contract Information", false, null);

                    succeded = false;
                }

                try
                {
                    UpdateContacts();
                }
                catch (Exception ex)
                {
                    //Logger.Write(string.Format("An error has ocurred while trying to import the Contact information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                    StringBuilder mailError = new StringBuilder();

                    mailError.AppendLine(string.Format("An Error Ocurred when importing the Contact Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                    //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "Dynamics Import Service - Error occured on Contact Information", false, null);

                    succeded = false;
                }

                return succeded;
            }
        }
コード例 #16
0
        /// <summary>
        /// Instance objects
        /// </summary>
        private void InstanceObjects()
        {
            _employeeRepository = new CachedRepository<CS_Employee>();
            _employeeOffCallRepository = new EFRepository<CS_EmployeeOffCallHistory>();
            _employeeCoverageRepository = new EFRepository<CS_EmployeeCoverage>();
            _employeeInfoRepository = new EFRepository<CS_View_EmployeeInfo>();
            _employeeCallLogInfoRepository = new EFRepository<CS_View_Employee_CallLogInfo>();
            _divisionRepository = new EFRepository<CS_Division>();
            _employeeEmergencyContactRepository = new EFRepository<CS_EmployeeEmergencyContact>();
            _customerInfoRepository = new EFRepository<CS_CustomerInfo>();
            _contactRepository = new EFRepository<CS_Contact>();
            _callCriteriaRepository = new EFRepository<CS_CallCriteria>();
            _callCriteriaValueRepository = new EFRepository<CS_CallCriteriaValue>();
            _callLogRepository = new EFRepository<CS_CallLog>();
            _callLogResourceRepository = new EFRepository<CS_CallLogResource>();
            _resourceRepository = new EFRepository<CS_Resource>();
            _phoneTypeRepository = new EFRepository<CS_PhoneType>();
            _phoneNumberRepository = new EFRepository<CS_PhoneNumber>();
            _managersLocationRepository = new EFRepository<CS_View_ManagersLocation>();

            _employeeRepository.UnitOfWork = _unitOfWork;
            _employeeOffCallRepository.UnitOfWork = _unitOfWork;
            _employeeCoverageRepository.UnitOfWork = _unitOfWork;
            _employeeInfoRepository.UnitOfWork = _unitOfWork;
            _employeeCallLogInfoRepository.UnitOfWork = _unitOfWork;
            _divisionRepository.UnitOfWork = _unitOfWork;
            _employeeEmergencyContactRepository.UnitOfWork = _unitOfWork;
            _customerInfoRepository.UnitOfWork = _unitOfWork;
            _contactRepository.UnitOfWork = _unitOfWork;
            _callCriteriaRepository.UnitOfWork = _unitOfWork;
            _callCriteriaValueRepository.UnitOfWork = _unitOfWork;
            _callLogRepository.UnitOfWork = _unitOfWork;
            _callLogResourceRepository.UnitOfWork = _unitOfWork;
            _resourceRepository.UnitOfWork = _unitOfWork;
            _phoneTypeRepository.UnitOfWork = _unitOfWork;
            _phoneNumberRepository.UnitOfWork = _unitOfWork;
            _managersLocationRepository.UnitOfWork = _unitOfWork;

            _callCriteriaModel = new CallCriteriaModel(_unitOfWork);
            _settingsModel = new SettingsModel(_unitOfWork);
            _emailModel = new EmailModel(_unitOfWork);
            _callLogModel = new CallLogModel(_unitOfWork);
        }
コード例 #17
0
        /// <summary>
        /// Service Method that will start the import process of IVantage data
        /// </summary>
        /// <returns>True if process ran OK, False if there was an error</returns>
        public bool ServiceWork()
        {
            SettingsModel settings = new SettingsModel();
            EmailModel emailModel = new EmailModel();

            try
            {
                UpdateDivisions();
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("An error has ocurred while trying to import the Division information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                StringBuilder mailError = new StringBuilder();
                mailError.AppendLine(string.Format("An Error Ocurred when importing the Division Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "IVantage Import Service - Error occured on Division Information", false, null);
                emailModel.SaveEmailList(settings.GetITEmailOnError(), "IVantage Import Service - Error occured on Division Information", mailError.ToString(), "System", (int)Globals.Security.SystemEmployeeID);

                return false;
            }

            try
            {
                UpdateEmployees();
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("An error has ocurred while trying to import the Employee information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                StringBuilder mailError = new StringBuilder();
                mailError.AppendLine(string.Format("An Error Ocurred when importing the Employee Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "IVantage Import Service - Error occured on Employee Information", false, null);
                emailModel.SaveEmailList(settings.GetITEmailOnError(), "IVantage Import Service - Error occured on Employee Information", mailError.ToString(), "System", (int)Globals.Security.SystemEmployeeID);

                return false;
            }

            try
            {
                UpdateEmergencyContacts();
            }
            catch (Exception ex)
            {
                Logger.Write(string.Format("An error has ocurred while trying to import the Emergency Contact information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));

                StringBuilder mailError = new StringBuilder();
                mailError.AppendLine(string.Format("An Error Ocurred when importing the Emergency Contact Information!\n{0}\n{1}", ex.InnerException, ex.StackTrace));
                //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "IVantage Import Service - Error occured on Emergency Contact Information", false, null);
                emailModel.SaveEmailList(settings.GetITEmailOnError(), "IVantage Import Service - Error occured on Emergency Contact Information", mailError.ToString(), "System", (int)Globals.Security.SystemEmployeeID);

                return false;
            }

            return true;
        }
コード例 #18
0
        /// <summary>
        /// Generates an Email Record with a status of Pending to be sent by the Email Service
        /// </summary>
        /// <param name="receipt">Receipt email address (only one)</param>
        /// <param name="subject">Email subject</param>
        /// <param name="body">Email body (HTML)</param>
        /// <param name="username">Username that requested the email creation</param>
        /// <param name="employeeId">EmployeeId of the Username that requested the email creation</param>
        public CS_Email SaveEmail(string receipt, string subject, string body, string username, int? employeeId)
        {
            string senderEmail = string.Empty;
            SettingsModel model = new SettingsModel(_unitOfWork);

            string[] emailConfiguration = model.GetEmailConfiguration();
            senderEmail = string.Format("{0}@{1}", emailConfiguration[0], emailConfiguration[2]);

            CS_Email email = new CS_Email();
            email.Sender = senderEmail;
            email.Receipts = receipt;
            email.Subject = subject;
            email.Body = body;
            email.Status = (short)Globals.EmailService.Status.Pending;
            email.StatusDate = DateTime.Now;

            email.CreatedBy = username;
            email.CreationID = employeeId;
            email.CreationDate = DateTime.Now;

            email.ModifiedBy = username;
            email.ModificationID = employeeId;
            email.ModificationDate = DateTime.Now;

            email.Active = true;

            return _emailRepository.Add(email);
        }
コード例 #19
0
        /// <summary>
        /// Service logic method
        /// </summary>
        /// <param name="arg"></param>
        private void DoWork(object arg)
        {
            for (; ; )
            {
                if (iVantageImportStop.WaitOne(10000))
                    return;

                try
                {
                    EmployeeModel employeeModel = new EmployeeModel();
                    employeeModel.ServiceWork();
                }
                catch (Exception ex)
                {
                    Logger.Write(string.Format("An error has ocurred while running the IVantage Import Service!\n{0}\n{1}", ex.Message, ex.StackTrace));

                    SettingsModel settings = new SettingsModel();
                    EmailModel emailModel = new EmailModel();
                    StringBuilder mailError = new StringBuilder();
                    mailError.AppendLine(string.Format("An error has ocurred while running the IVantage Import Service!\n{0}\n{1}", ex.Message, ex.StackTrace));
                    //MailUtility.SendMail(settings.GetITEmailOnError(), "", "", mailError.ToString(), "IVantage Import Service - Error occured on Employee Information", false, null);
                    emailModel.SaveEmailList(settings.GetITEmailOnError(), "IVantage Import Service - Error occured on Employee Information", mailError.ToString(), "System", (int)Globals.Security.SystemEmployeeID);
                }
            }
        }
コード例 #20
0
        public IList<EmailVO> ListReceiptsByCallLog(string callLogTypeId, int jobId, CS_CallLog callLog, out List<int> callCriteriaIDs)
        {
            CS_Job job = new CS_Job();
            IList<CS_Employee> lstEmployee = new List<CS_Employee>();
            List<CS_Employee> lstEmployeeAux = new List<CS_Employee>();
            IList<CS_Contact> lstContacts = new List<CS_Contact>();
            IList<EmailVO> lstEmail = new List<EmailVO>();

            string emailDomain = string.Empty;

            SettingsModel model = new SettingsModel(_unitOfWork);
            emailDomain = model.GetDomain();

            CS_CallCriteriaRepository _rep = new CS_CallCriteriaRepository(_callCriteriaRepository, _callCriteriaRepository.UnitOfWork);

            int callLogID = 0;

            if (callLog != null)
                callLogID = callLog.ID;

            IList<CS_SP_CheckCallCriteria_Result> callCriteriaResult = _rep.CheckCallCriteria(callLogID, int.Parse(callLogTypeId), jobId);

            IList<int> result = new List<int>();

            for (int i = 0; i < callCriteriaResult.Count; i++)
            {
                result.Add(callCriteriaResult[i].CallCriteriaID.Value);
            }

            callCriteriaIDs = result.ToList();

            lstEmployee = _employeeRepository.ListAll(e => e.CS_CallCriteria.Any(f => result.Contains(f.ID) && f.Active)).ToList();

            lstContacts = _contactRepository.ListAll(e => e.CS_CallCriteria.Any(f => result.Contains(f.ID) && f.Active)).ToList();

            //OLD METHOD
            //job = _jobRepository.Get(e => e.ID == jobId, new string[] { "CS_JobDivision", "CS_CustomerInfo", "CS_JobInfo", "CS_LocationInfo", "CS_JobDescription" });

            //lstEmployee = ListEmployeeCriteriaByDivisionAndCustomer(job);

            //if (!job.ID.Equals(Globals.GeneralLog.ID))
            //    lstEmployeeAux = FilterEmployeeByCriteriaValue(lstEmployee, job).ToList();

            //if (null != callLog)
            //    lstEmployeeAux.AddRange(VerifyHeavyEquipmentCallCriteria(lstEmployee.ToList(), callLog));

            //lstEmployee = lstEmployeeAux.Distinct().ToList();

            //lstEmployee = ListEmployeeByCallLogCriteria(callLogTypeId, lstEmployee.ToList());

            //for (int i = 0; i < lstEmployee.Count; i++)
            //{

            //    CS_EmployeeOffCallHistory offCall = GetActiveOffCallByEmployeeID(lstEmployee[i].ID);

            //    if (null != offCall)
            //        lstEmployee[i] = offCall.CS_Employee_Proxy;
            //}

            //lstContacts = ListContactsCriteriaByDivisionAndCustomer(job);

            //if (!job.ID.Equals(Globals.GeneralLog.ID))
            //    lstContacts = FilterContactsByCriteriaValue(lstContacts, job);

            //lstContacts = ListCustomerContactByCallLogCriteria(callLogTypeId, lstContacts.ToList());

            //if (null != callLog)
            //    lstContacts = VerifyHeavyEquipmentCallCriteria(lstContacts.ToList(), callLog);

            for (int i = 0; i < lstEmployee.Count; i++)
            {
                if (!string.IsNullOrEmpty(lstEmployee[i].GetEmployeeEmail(emailDomain)))
                {
                    EmailVO email = new EmailVO();
                    email.PersonID = lstEmployee[i].ID;
                    email.Name = lstEmployee[i].FullName;
                    email.Email = lstEmployee[i].GetEmployeeEmail(emailDomain);
                    email.Type = (int)Globals.CallCriteria.EmailVOType.Employee;

                    if (!lstEmail.Contains(email, new Globals.EmailService.EmailVO_Comparer()))
                        lstEmail.Add(email);
                }
            }

            for (int i = 0; i < lstContacts.Count; i++)
            {
                if (!string.IsNullOrEmpty(lstContacts[i].Email))
                {
                    EmailVO email = new EmailVO();
                    email.PersonID = lstContacts[i].ID;
                    email.Name = lstContacts[i].FullName;
                    email.Email = lstContacts[i].Email;
                    email.Type = (int)Globals.CallCriteria.EmailVOType.Contact;

                    if (!lstEmail.Contains(email, new Globals.EmailService.EmailVO_Comparer()))
                        lstEmail.Add(email);
                }
            }

            return lstEmail;
        }
コード例 #21
0
        public void SendNotificationForTransportationTeam(IList<CS_EquipmentPermit> permitList)
        {
            _settingsModel = new SettingsModel();
            _emailModel = new EmailModel();

            for (int i = 0; i < permitList.Count; i++)
            {
                CS_EquipmentPermit permit = permitList[i];
                IList<CS_Email> emails = new List<CS_Email>();

                //Body
                string body = GenerateEmailBodyForTransportationTeam(permit);

                //List receipts
                string receipts = _settingsModel.GetTransportationTeamEmails();

                //Subject
                string subject = GenerateEmailSubjectTransportationTeam(permit);

                if (!string.IsNullOrEmpty(receipts))
                {
                    emails = _emailModel.SaveEmailList(receipts, subject, body, "System", Globals.Security.SystemEmployeeID);
                }
            }
        }