Exemple #1
0
        /// <summary>
        /// This method used for added reminder notification log
        /// </summary>
        /// <param name="emailTemplateId"></param>
        /// <param name="employeeBillId"></param>
        /// <param name="isReminderMail"></param>
        private void AddedReminderNotificationLog(long emailTemplateId, long employeeBillId, bool isReminderMail, string emailTo)
        {
            using (var _dbTeleBillingContext = new telebilling_v01Context())
            {
                Emailreminderlog newEmailReminderLog = new Emailreminderlog();
                newEmailReminderLog.CreatedDate    = DateTime.Now;
                newEmailReminderLog.IsReminderMail = isReminderMail;
                newEmailReminderLog.TemplateId     = emailTemplateId;
                newEmailReminderLog.EmailTo        = string.IsNullOrEmpty(emailTo) ? string.Empty : emailTo;
                newEmailReminderLog.EmployeeBillId = employeeBillId;

                _dbTeleBillingContext.Add(newEmailReminderLog);
                _dbTeleBillingContext.SaveChanges();
            }
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="employeeBillServicePackage"></param>
        /// <param name="employeeBillMasters"></param>
        private void SendEmailNotificationToEmployee(Employeebillservicepackage employeeBillServicePackage, Employeebillmaster employeeBillMaster)
        {
            if (!string.IsNullOrEmpty(employeeBillMaster.Employee.EmailId))
            {
                Dictionary <string, string> replacements = new Dictionary <string, string>();
                EnumList.Month month = (EnumList.Month)employeeBillMaster.BillMonth;
                replacements.Add("{BillNumber}", employeeBillMaster.BillNumber);
                replacements.Add("{BillMonth}", month.ToString());
                replacements.Add("{BillYear}", employeeBillMaster.BillYear.ToString());
                replacements.Add("{newEmpName}", employeeBillMaster.Employee.FullName);
                replacements.Add("{Provider}", employeeBillMaster.Provider.Name);
                string telphoneNumber = !string.IsNullOrEmpty(employeeBillMaster.TelephoneNumber) ? employeeBillMaster.TelephoneNumber.Trim() : string.Empty;
                replacements.Add("{TelePhoneNumber}", telphoneNumber);

                string deductionAmount = string.Empty;
                if (employeeBillServicePackage.DeductionAmount != null)
                {
                    deductionAmount = Convert.ToString(employeeBillServicePackage.DeductionAmount);
                }
                replacements.Add("{DeductionAmount}", deductionAmount);

                using (var _dbTeleBillingContext = new telebilling_v01Context())
                {
                    long          emailTemplateTypeId = Convert.ToInt64(EnumList.EmailTemplateType.SendEmailNotificationToEmployeForAmountToBeDeducted);
                    Emailtemplate emailTemplate       = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);
                    if (emailTemplate != null && !string.IsNullOrEmpty(employeeBillMaster.Employee.EmailId))
                    {
                        string body = emailTemplate.EmailText;
                        replacements.ToList().ForEach(x =>
                        {
                            body = body.Replace(x.Key, Convert.ToString(x.Value));
                        });

                        if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, employeeBillMaster.Employee.EmailId))
                        {
                            AddedReminderNotificationLog(emailTemplate.Id, employeeBillMaster.Id, false, employeeBillMaster.Employee.EmailId);
                        }
                    }
                }
            }
        }
Exemple #3
0
        void timerReminder_Elapsed(object sender, ElapsedEventArgs e)
        {
            using (var _dbTeleBillingContext = new telebilling_v01Context())
            {
                int waitingForIdentificationStatus            = Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForIdentification);
                int waitingForLineManagerApprovalStatus       = Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForLineManagerApproval);
                List <Employeebillmaster> employeeBillMasters = _dbTeleBillingContext.Employeebillmaster.Where(x => !x.IsDelete && (x.EmployeeBillStatus == waitingForIdentificationStatus || x.EmployeeBillStatus == waitingForLineManagerApprovalStatus)).Include(x => x.Provider).Include(x => x.Employee).Include(x => x.Linemanager).Include(x => x.BillDelegatedEmp).ToList();
                Configuration             configuration       = _dbTeleBillingContext.Configuration.First();
                DateTime todaydate = DateTime.Now.Date;

                //mail sending only one time for bill identification
                if (configuration.NBillAllocationToEmployee)
                {
                    List <Employeebillmaster> employeeBillMastersForNotiIdentification = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForIdentificationStatus && x.CreatedDate.Date == todaydate).ToList();
                    if (employeeBillMastersForNotiIdentification.Any())
                    {
                        int           emailTemplateTypeId = Convert.ToInt16(EnumList.EmailTemplateType.EmployeeCallIdentificationNotification);
                        Emailtemplate emailTemplate       = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);
                        if (emailTemplate != null)
                        {
                            foreach (var item in employeeBillMastersForNotiIdentification)
                            {
                                Emailreminderlog emailReminderLog = _dbTeleBillingContext.Emailreminderlog.FirstOrDefault(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && !x.IsReminderMail);
                                if (emailReminderLog == null && !string.IsNullOrEmpty(item.Employee.EmailId))
                                {
                                    Dictionary <string, string> replacements = new Dictionary <string, string>();
                                    EnumList.Month month = (EnumList.Month)item.BillMonth;
                                    replacements.Add("{newEmpName}", item.Employee.FullName);
                                    replacements.Add("{BillNumber}", item.BillNumber);
                                    replacements.Add("{BillMonth}", month.ToString());
                                    replacements.Add("{Provider}", item.Provider.Name);
                                    replacements.Add("{BillYear}", item.BillYear.ToString());
                                    replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                    string body = emailTemplate.EmailText;
                                    replacements.ToList().ForEach(x =>
                                    {
                                        body = body.Replace(x.Key, Convert.ToString(x.Value));
                                    });

                                    if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.Employee.EmailId))
                                    {
                                        AddedReminderNotificationLog(emailTemplate.Id, item.Id, false, item.Employee.EmailId);
                                    }
                                }
                            }
                        }
                    }
                }

                //mail sending only one time for bill delegated identification
                if (configuration.NBillDelegatesForIdentification)
                {
                    List <Employeebillmaster> employeeBillMastersForDelgatedIdentification = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForIdentificationStatus && x.BillDelegatedEmpId != null).ToList();
                    if (employeeBillMastersForDelgatedIdentification.Any())
                    {
                        int           emailTemplateForDelegatedTypeId = Convert.ToInt16(EnumList.EmailTemplateType.BillDelegatesForIdentification);
                        Emailtemplate emailTemplate = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateForDelegatedTypeId);
                        if (emailTemplate != null)
                        {
                            foreach (var item in employeeBillMastersForDelgatedIdentification)
                            {
                                Emailreminderlog emailReminderLog = _dbTeleBillingContext.Emailreminderlog.FirstOrDefault(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && !x.IsReminderMail);
                                if (emailReminderLog == null && !string.IsNullOrEmpty(item.BillDelegatedEmp.EmailId))
                                {
                                    Dictionary <string, string> replacements = new Dictionary <string, string>();
                                    EnumList.Month month = (EnumList.Month)item.BillMonth;
                                    replacements.Add("{newEmpName}", item.BillDelegatedEmp.FullName);
                                    replacements.Add("{BillNumber}", item.BillNumber);
                                    replacements.Add("{BillMonth}", month.ToString());
                                    replacements.Add("{Provider}", item.Provider.Name);
                                    replacements.Add("{BillYear}", item.BillYear.ToString());

                                    string body = emailTemplate.EmailText;
                                    replacements.ToList().ForEach(x =>
                                    {
                                        body = body.Replace(x.Key, Convert.ToString(x.Value));
                                    });

                                    if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.BillDelegatedEmp.EmailId))
                                    {
                                        AddedReminderNotificationLog(emailTemplate.Id, item.Id, false, item.BillDelegatedEmp.EmailId);
                                    }
                                }
                            }
                        }
                    }
                }

                //mail sending only one time for bill identification request approval to line manager
                if (configuration.NNewBillReceiveForApproval)
                {
                    List <Employeebillmaster> employeeBillMastersForbillApproval = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForLineManagerApprovalStatus && x.CreatedDate.Date == todaydate).ToList();
                    if (employeeBillMastersForbillApproval.Any())
                    {
                        int           emailTemplateTypeId = Convert.ToInt16(EnumList.EmailTemplateType.LineManagerApprovalNotification);
                        Emailtemplate emailTemplate       = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);
                        if (emailTemplate != null)
                        {
                            foreach (var item in employeeBillMastersForbillApproval)
                            {
                                Emailreminderlog emailReminderLog = _dbTeleBillingContext.Emailreminderlog.FirstOrDefault(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && !x.IsReminderMail);
                                if (emailReminderLog == null && !string.IsNullOrEmpty(item.Linemanager.EmailId))
                                {
                                    Dictionary <string, string> replacements = new Dictionary <string, string>();
                                    replacements.Add("{newEmpName}", item.Employee.FullName);
                                    EnumList.Month month = (EnumList.Month)item.BillMonth;
                                    replacements.Add("{BillNumber}", item.BillNumber);
                                    replacements.Add("{BillMonth}", month.ToString());
                                    replacements.Add("{BillYear}", item.BillYear.ToString());
                                    replacements.Add("{Provider}", item.Provider.Name);
                                    replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                    string body = emailTemplate.EmailText;
                                    replacements.ToList().ForEach(x =>
                                    {
                                        body = body.Replace(x.Key, Convert.ToString(x.Value));
                                    });

                                    if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.Linemanager.EmailId))
                                    {
                                        AddedReminderNotificationLog(emailTemplate.Id, item.Id, false, item.Linemanager.EmailId);
                                    }
                                }
                            }
                        }
                    }
                }

                //mail sending only one time for delegates bill identification request approval to line manager
                if (configuration.NDelegatesBillForApproval)
                {
                    List <Employeebillmaster> employeeBillMastersForDelegatesBillApproval = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForLineManagerApprovalStatus && x.CreatedDate.Date == todaydate && x.BillDelegatedEmpId != null).ToList();
                    if (employeeBillMastersForDelegatesBillApproval.Any())
                    {
                        int           emailTemplateTypeId = Convert.ToInt16(EnumList.EmailTemplateType.DelegateBillApproval);
                        Emailtemplate emailTemplate       = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);
                        if (emailTemplate != null)
                        {
                            foreach (var item in employeeBillMastersForDelegatesBillApproval)
                            {
                                Emailreminderlog emailReminderLog = _dbTeleBillingContext.Emailreminderlog.FirstOrDefault(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && !x.IsReminderMail);
                                if (emailReminderLog == null && !string.IsNullOrEmpty(item.BillDelegatedEmp.EmailId))
                                {
                                    Dictionary <string, string> replacements = new Dictionary <string, string>();
                                    replacements.Add("{newEmpName}", item.Employee.FullName);
                                    EnumList.Month month = (EnumList.Month)item.BillMonth;
                                    replacements.Add("{BillNumber}", item.BillNumber);
                                    replacements.Add("{BillMonth}", month.ToString());
                                    replacements.Add("{BillYear}", item.BillYear.ToString());
                                    replacements.Add("{Provider}", item.Provider.Name);
                                    replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                    string body = emailTemplate.EmailText;
                                    replacements.ToList().ForEach(x =>
                                    {
                                        body = body.Replace(x.Key, Convert.ToString(x.Value));
                                    });

                                    if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.BillDelegatedEmp.EmailId))
                                    {
                                        AddedReminderNotificationLog(emailTemplate.Id, item.Id, false, item.BillDelegatedEmp.EmailId);
                                    }
                                }
                            }
                        }
                    }
                }

                //mail sending reminder in perticular interval for bill identification and also delegated employee
                if (configuration.REmployeeCallIdentificationIsActive)                //Included delgated employee
                {
                    List <Employeebillmaster> employeeBillMastersForREmpCllIdetification = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForIdentificationStatus).ToList();
                    if (employeeBillMastersForREmpCllIdetification.Any())
                    {
                        int emailTemplateTypeId = Convert.ToInt16(EnumList.EmailTemplateType.EmployeeCallIdentificationRemider);
                        int emailTemplateTypeForDelegateUserId = Convert.ToInt16(EnumList.EmailTemplateType.BillDelegatesForIdentification);

                        foreach (var item in employeeBillMastersForREmpCllIdetification)
                        {
                            DateTime         reminderDate     = new DateTime();
                            Emailreminderlog emailReminderLog = new Emailreminderlog();
                            //check bill delgated or not
                            if (item.BillDelegatedEmpId != null)
                            {
                                Emailtemplate emailTemplateForDelegateUser = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeForDelegateUserId);
                                if (emailTemplateForDelegateUser != null && !string.IsNullOrEmpty(item.BillDelegatedEmp.EmailId))
                                {
                                    emailReminderLog = _dbTeleBillingContext.Emailreminderlog.Where(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplateForDelegateUser.Id && x.IsReminderMail).OrderByDescending(x => x.CreatedDateInt).FirstOrDefault();

                                    int intervalDay = configuration.REmployeeCallIdentificationInterval != null?Convert.ToInt32(configuration.REmployeeCallIdentificationInterval) : 0;

                                    if (emailReminderLog != null)
                                    {
                                        reminderDate = emailReminderLog.CreatedDate.AddDays(intervalDay);
                                    }
                                    else
                                    {
                                        reminderDate = item.CreatedDate.AddDays(intervalDay);
                                    }

                                    if (reminderDate.Date == DateTime.Now.Date)
                                    {
                                        Dictionary <string, string> replacements = new Dictionary <string, string>();
                                        replacements.Add("{newEmpName}", item.Employee.FullName);
                                        EnumList.Month month = (EnumList.Month)item.BillMonth;
                                        replacements.Add("{BillNumber}", item.BillNumber);
                                        replacements.Add("{Provider}", item.Provider.Name);
                                        replacements.Add("{BillMonth}", month.ToString());
                                        replacements.Add("{BillYear}", item.BillYear.ToString());
                                        replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                        string body = emailTemplateForDelegateUser.EmailText;
                                        replacements.ToList().ForEach(x =>
                                        {
                                            body = body.Replace(x.Key, Convert.ToString(x.Value));
                                        });

                                        if (SendEmail(emailTemplateForDelegateUser.EmailFrom, emailTemplateForDelegateUser.EmailBcc, emailTemplateForDelegateUser.Subject, body, item.BillDelegatedEmp.EmailId))
                                        {
                                            AddedReminderNotificationLog(emailTemplateForDelegateUser.Id, item.Id, true, item.BillDelegatedEmp.EmailId);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                Emailtemplate emailTemplate = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);
                                if (emailTemplate != null && !string.IsNullOrEmpty(item.Employee.EmailId))
                                {
                                    emailReminderLog = _dbTeleBillingContext.Emailreminderlog.Where(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && x.IsReminderMail).OrderByDescending(x => x.CreatedDateInt).FirstOrDefault();

                                    int intervalDay = configuration.REmployeeCallIdentificationInterval != null?Convert.ToInt32(configuration.REmployeeCallIdentificationInterval) : 0;

                                    if (emailReminderLog != null)
                                    {
                                        reminderDate = emailReminderLog.CreatedDate.AddDays(intervalDay);
                                    }
                                    else
                                    {
                                        reminderDate = item.CreatedDate.AddDays(intervalDay);
                                    }

                                    if (reminderDate.Date == DateTime.Now.Date)
                                    {
                                        Dictionary <string, string> replacements = new Dictionary <string, string>();
                                        replacements.Add("{newEmpName}", item.Employee.FullName);
                                        EnumList.Month month = (EnumList.Month)item.BillMonth;
                                        replacements.Add("{BillNumber}", item.BillNumber);
                                        replacements.Add("{BillMonth}", month.ToString());
                                        replacements.Add("{BillYear}", item.BillYear.ToString());
                                        replacements.Add("{Provider}", item.Provider.Name);
                                        replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                        string body = emailTemplate.EmailText;
                                        replacements.ToList().ForEach(x =>
                                        {
                                            body = body.Replace(x.Key, Convert.ToString(x.Value));
                                        });

                                        if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.Employee.EmailId))
                                        {
                                            AddedReminderNotificationLog(emailTemplate.Id, item.Id, true, item.Employee.EmailId);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                //mail sending reminder perticular interval for bill identification request approval to line manager
                if (configuration.RLinemanagerApprovalIsActive)
                {
                    List <Employeebillmaster> employeeBillMastersForRLineManager = employeeBillMasters.Where(x => !x.IsDelete && x.EmployeeBillStatus == waitingForLineManagerApprovalStatus).ToList();
                    if (employeeBillMastersForRLineManager.Any())
                    {
                        foreach (var item in employeeBillMastersForRLineManager)
                        {
                            DateTime         reminderDate     = new DateTime();
                            Emailreminderlog emailReminderLog = new Emailreminderlog();
                            //check bill delgated or not
                            if (item.BillDelegatedEmpId != null)
                            {
                                int           emailTemplateDelegateTypeId  = Convert.ToInt16(EnumList.EmailTemplateType.DelegateBillApproval);
                                Emailtemplate emailTemplateForDelegateUser = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateDelegateTypeId);
                                if (emailTemplateForDelegateUser != null && !string.IsNullOrEmpty(item.BillDelegatedEmp.EmailId))
                                {
                                    emailReminderLog = _dbTeleBillingContext.Emailreminderlog.Where(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplateForDelegateUser.Id && x.IsReminderMail).OrderByDescending(x => x.CreatedDateInt).FirstOrDefault();

                                    int intervalDay = configuration.RLinemanagerApprovalInterval != null?Convert.ToInt32(configuration.RLinemanagerApprovalInterval) : 0;

                                    if (emailReminderLog != null)
                                    {
                                        reminderDate = emailReminderLog.CreatedDate.AddDays(intervalDay);
                                    }
                                    else
                                    {
                                        reminderDate = item.CreatedDate.AddDays(intervalDay);
                                    }

                                    if (reminderDate.Date == DateTime.Now.Date)
                                    {
                                        Dictionary <string, string> replacements = new Dictionary <string, string>();
                                        replacements.Add("{newEmpName}", item.Employee.FullName);
                                        EnumList.Month month = (EnumList.Month)item.BillMonth;
                                        replacements.Add("{BillNumber}", item.BillNumber);
                                        replacements.Add("{BillMonth}", month.ToString());
                                        replacements.Add("{BillYear}", item.BillYear.ToString());
                                        replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                        string body = emailTemplateForDelegateUser.EmailText;
                                        replacements.ToList().ForEach(x =>
                                        {
                                            body = body.Replace(x.Key, Convert.ToString(x.Value));
                                        });

                                        if (SendEmail(emailTemplateForDelegateUser.EmailFrom, emailTemplateForDelegateUser.EmailBcc, emailTemplateForDelegateUser.Subject, body, item.BillDelegatedEmp.EmailId))
                                        {
                                            AddedReminderNotificationLog(emailTemplateForDelegateUser.Id, item.Id, true, item.BillDelegatedEmp.EmailId);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                int           emailTemplateTypeId = Convert.ToInt16(EnumList.EmailTemplateType.LineManagerApprovalRemider);
                                Emailtemplate emailTemplate       = _dbTeleBillingContext.Emailtemplate.FirstOrDefault(x => x.EmailTemplateTypeId == emailTemplateTypeId);

                                if (emailTemplate != null && !string.IsNullOrEmpty(item.Linemanager.EmailId))
                                {
                                    emailReminderLog = _dbTeleBillingContext.Emailreminderlog.Where(x => x.EmployeeBillId == item.Id && x.TemplateId == emailTemplate.Id && x.IsReminderMail).OrderByDescending(x => x.CreatedDateInt).FirstOrDefault();

                                    int intervalDay = configuration.RLinemanagerApprovalInterval != null?Convert.ToInt32(configuration.RLinemanagerApprovalInterval) : 0;

                                    if (emailReminderLog != null)
                                    {
                                        reminderDate = emailReminderLog.CreatedDate.AddDays(intervalDay);
                                    }
                                    else
                                    {
                                        reminderDate = item.CreatedDate.AddDays(intervalDay);
                                    }

                                    if (reminderDate.Date == DateTime.Now.Date)
                                    {
                                        Dictionary <string, string> replacements = new Dictionary <string, string>();
                                        replacements.Add("{newEmpName}", item.Employee.FullName);
                                        EnumList.Month month = (EnumList.Month)item.BillMonth;
                                        replacements.Add("{BillNumber}", item.BillNumber);
                                        replacements.Add("{BillMonth}", month.ToString());
                                        replacements.Add("{BillYear}", item.BillYear.ToString());
                                        replacements.Add("{TelePhoneNumber}", item.TelephoneNumber.Trim());

                                        string body = emailTemplate.EmailText;
                                        replacements.ToList().ForEach(x =>
                                        {
                                            body = body.Replace(x.Key, Convert.ToString(x.Value));
                                        });

                                        if (SendEmail(emailTemplate.EmailFrom, emailTemplate.EmailBcc, emailTemplate.Subject, body, item.Linemanager.EmailId))
                                        {
                                            AddedReminderNotificationLog(emailTemplate.Id, item.Id, true, item.Linemanager.EmailId);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
 public EmailSender(telebilling_v01Context dbTeleBilling_V01Context)
 {
     _dbTeleBilling_V01Context = dbTeleBilling_V01Context;
 }
 public AccountRepository(telebilling_v01Context dbTeleBilling_V01Context)
 {
     _dbTeleBilling_V01Context = dbTeleBilling_V01Context;
 }
Exemple #6
0
        void timerBillClosed_Elapsed(object sender, ElapsedEventArgs e)
        {
            using (var _dbTeleBillingContext = new telebilling_v01Context())
            {
                try
                {
                    int billAllocatedStatusId     = Convert.ToInt16(EnumList.BillStatus.BillAllocated);
                    List <Billmaster> billMasters = _dbTeleBillingContext.Billmaster.Where(x => !x.IsDelete && (x.BillStatusId == billAllocatedStatusId)).ToList();
                    if (billMasters.Any())
                    {
                        foreach (var item in billMasters)
                        {
                            if (item.BillDueDate != null)
                            {
                                if (Convert.ToDateTime(item.BillDueDate).Date < DateTime.Now.Date)
                                {
                                    int billCloseStatusId         = Convert.ToInt16(EnumList.EmployeeBillStatus.CloseBill);
                                    int billAutoCloseBillStatusId = Convert.ToInt16(EnumList.EmployeeBillStatus.AutoCloseBill);
                                    List <Employeebillmaster> employeeBillMasters = _dbTeleBillingContext.Employeebillmaster.Where(x => x.BillMasterId == item.Id && !x.IsDelete && (x.EmployeeBillStatus != billCloseStatusId && x.EmployeeBillStatus != billAutoCloseBillStatusId)).Include(x => x.Employee).Include(x => x.Provider).ToList();
                                    List <Notificationlog>    notificationlogs    = new List <Notificationlog>();
                                    if (employeeBillMasters.Any())
                                    {
                                        foreach (var subItem in employeeBillMasters)
                                        {
                                            #region Transaction Log Entry

                                            if (subItem.TransactionId == null)
                                            {
                                                subItem.TransactionId = GenerateTeleBillingTransctionID();
                                            }

                                            //var jsonSerailzeObj = JsonConvert.SerializeObject(subItem);

                                            //SaveRequestTraseLog(Convert.ToInt64(subItem.TransactionId), 0, Convert.ToInt64(EnumList.TransactionTraseLog.BillClosed), jsonSerailzeObj);
                                            #endregion

                                            List <Employeebillservicepackage> employeeBillServicePackages = _dbTeleBillingContext.Employeebillservicepackage.Where(x => x.EmployeeBillId == subItem.Id && !x.IsDelete).Include(x => x.Package).ToList();
                                            foreach (var employeeBillServicePackage in employeeBillServicePackages)
                                            {
                                                if (!subItem.Employee.IsPresidentOffice)
                                                {
                                                    if (string.IsNullOrEmpty(subItem.TelephoneNumber))                                                    //For Skyp
                                                    {
                                                        //for service landline or voip
                                                        if (employeeBillServicePackage.ServiceTypeId == Convert.ToInt64(EnumList.ServiceType.VOIP) || employeeBillServicePackage.ServiceTypeId == Convert.ToInt64(EnumList.ServiceType.MOC))
                                                        {
                                                            if (subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForIdentification) || subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.BillReject))
                                                            {
                                                                List <Billdetails> billdetails       = _dbTeleBillingContext.Billdetails.Where(x => x.EmployeeBillId == subItem.Id && x.ServiceTypeId == employeeBillServicePackage.ServiceTypeId).ToList();
                                                                decimal            personalDeduction = 0;
                                                                decimal            businessCharge    = 0;
                                                                foreach (var subBillDetail in billdetails)
                                                                {
                                                                    if (subBillDetail.CallIdentificationType == Convert.ToInt16(EnumList.AssignType.Business))
                                                                    {
                                                                        businessCharge += subBillDetail.CallAmount != null?Convert.ToDecimal(subBillDetail.CallAmount) : 0;
                                                                    }
                                                                    else if (subBillDetail.CallIdentificationType == Convert.ToInt16(EnumList.AssignType.Employee))
                                                                    {
                                                                        personalDeduction += subBillDetail.CallAmount != null?Convert.ToDecimal(subBillDetail.CallAmount) : 0;
                                                                    }
                                                                }
                                                                employeeBillServicePackage.PersonalIdentificationAmount = personalDeduction;
                                                                employeeBillServicePackage.BusinessIdentificationAmount = businessCharge;
                                                                employeeBillServicePackage.DeductionAmount = personalDeduction;
                                                            }
                                                            else if (subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForLineManagerApproval) || subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.LineManagerApproved))
                                                            {
                                                                employeeBillServicePackage.DeductionAmount = employeeBillServicePackage.PersonalIdentificationAmount;
                                                            }
                                                            SendEmailNotificationToEmployee(employeeBillServicePackage, subItem);
                                                        }
                                                    }
                                                    else
                                                    {
                                                        var telephoneNumberAllocation = _dbTeleBillingContext.Telephonenumberallocation.FirstOrDefault(x => x.TelephoneNumber == subItem.TelephoneNumber && x.EmployeeId == subItem.EmployeeId && !x.IsDelete);
                                                        if (telephoneNumberAllocation.AssignTypeId != Convert.ToInt16(EnumList.AssignType.Business))
                                                        {
                                                            employeeBillServicePackage.DeductionAmount = 0;
                                                            List <Billdetails> billDetails = _dbTeleBillingContext.Billdetails.Where(x => x.EmployeeBillId == subItem.Id && x.ServiceTypeId == employeeBillServicePackage.ServiceTypeId).ToList();
                                                            decimal            totalAmount = billDetails.Sum(x => x.CallAmount).Value;

                                                            //for service landline
                                                            if (employeeBillServicePackage.ServiceTypeId == Convert.ToInt64(EnumList.ServiceType.LandLine) || employeeBillServicePackage.ServiceTypeId == Convert.ToInt64(EnumList.ServiceType.StaticIP))
                                                            {
                                                                //remaning
                                                                employeeBillServicePackage.DeductionAmount = employeeBillServicePackage.PersonalIdentificationAmount;
                                                                SendEmailNotificationToEmployee(employeeBillServicePackage, subItem);
                                                            }
                                                            else
                                                            {
                                                                if (subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForIdentification) || subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.BillReject))
                                                                {
                                                                    if (employeeBillServicePackage.Package.PackageAmount < totalAmount)
                                                                    {
                                                                        decimal amount = 0;
                                                                        decimal businessIdentificationAmount = employeeBillServicePackage.BusinessIdentificationAmount != null?Convert.ToDecimal(employeeBillServicePackage.BusinessIdentificationAmount) : 0;

                                                                        if (employeeBillServicePackage.Package.PackageAmount < businessIdentificationAmount)
                                                                        {
                                                                            amount = businessIdentificationAmount;
                                                                        }
                                                                        else
                                                                        {
                                                                            amount = employeeBillServicePackage.Package.PackageAmount != null?Convert.ToDecimal(employeeBillServicePackage.Package.PackageAmount) : 0;
                                                                        }
                                                                        //BusinessIdentificationAmount alway less than or equal Package Amount
                                                                        employeeBillServicePackage.DeductionAmount = totalAmount - amount;
                                                                        SendEmailNotificationToEmployee(employeeBillServicePackage, subItem);
                                                                    }
                                                                    else
                                                                    {
                                                                        employeeBillServicePackage.DeductionAmount = 0;
                                                                    }
                                                                }
                                                                else if (subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForLineManagerApproval) || subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.LineManagerApproved))
                                                                {
                                                                    if (subItem.EmployeeBillStatus == Convert.ToInt16(EnumList.EmployeeBillStatus.WaitingForLineManagerApproval))
                                                                    {
                                                                        List <Billdetails> billdetails = _dbTeleBillingContext.Billdetails.Where(x => x.EmployeeBillId == subItem.Id).ToList();
                                                                        var serviceBillDetials         = billdetails.GroupBy(x => x.ServiceTypeId);
                                                                        var finalServiceDetails        = serviceBillDetials.Where(x => x.Key == employeeBillServicePackage.ServiceTypeId);

                                                                        foreach (var billDetailsData in finalServiceDetails)
                                                                        {
                                                                            decimal personalDeduction = 0;
                                                                            decimal businessCharge    = 0;
                                                                            foreach (var subBillDetail in billDetailsData)
                                                                            {
                                                                                if (subBillDetail.CallIdentificationType == Convert.ToInt16(EnumList.AssignType.Business))
                                                                                {
                                                                                    businessCharge += subBillDetail.CallAmount != null?Convert.ToDecimal(subBillDetail.CallAmount) : 0;
                                                                                }
                                                                                else if (subBillDetail.CallIdentificationType == Convert.ToInt16(EnumList.AssignType.Employee))
                                                                                {
                                                                                    personalDeduction += subBillDetail.CallAmount != null?Convert.ToDecimal(subBillDetail.CallAmount) : 0;
                                                                                }
                                                                            }
                                                                            employeeBillServicePackage.PersonalIdentificationAmount = personalDeduction;
                                                                            employeeBillServicePackage.BusinessIdentificationAmount = businessCharge;
                                                                        }
                                                                    }

                                                                    if (employeeBillServicePackage.Package.PackageAmount < totalAmount)
                                                                    {
                                                                        decimal businessIdentificationAmount = employeeBillServicePackage.BusinessIdentificationAmount != null?Convert.ToDecimal(employeeBillServicePackage.BusinessIdentificationAmount) : 0;

                                                                        decimal amount = 0;
                                                                        if (employeeBillServicePackage.Package.PackageAmount < businessIdentificationAmount)
                                                                        {
                                                                            amount = businessIdentificationAmount;
                                                                        }
                                                                        else
                                                                        {
                                                                            amount = employeeBillServicePackage.Package.PackageAmount != null?Convert.ToDecimal(employeeBillServicePackage.Package.PackageAmount) : 0;
                                                                        }
                                                                        employeeBillServicePackage.DeductionAmount = totalAmount - amount;
                                                                        SendEmailNotificationToEmployee(employeeBillServicePackage, subItem);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        else
                                                        {
                                                            employeeBillServicePackage.DeductionAmount = 0;
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    employeeBillServicePackage.DeductionAmount = 0;
                                                }
                                                employeeBillServicePackage.UpdateDate = DateTime.Now;
                                            }

                                            _dbTeleBillingContext.UpdateRange(employeeBillServicePackages);
                                            _dbTeleBillingContext.SaveChanges();

                                            subItem.EmployeeBillStatus = Convert.ToInt16(EnumList.EmployeeBillStatus.AutoCloseBill);
                                            subItem.UpdatedDate        = DateTime.Now;
                                            subItem.BillClosedDate     = DateTime.Now;


                                            #region Notification FOR Bill Close
                                            notificationlogs.Add(GenerateNotificationObject(Convert.ToInt16(subItem.EmployeeId), 1, Convert.ToInt16(EnumList.NotificationType.BillClosed), subItem.Id));
                                            #endregion
                                        }

                                        if (notificationlogs.Any())
                                        {
                                            _dbTeleBillingContext.AddRange(notificationlogs);
                                            _dbTeleBillingContext.SaveChanges();
                                        }

                                        _dbTeleBillingContext.UpdateRange(employeeBillMasters);
                                        _dbTeleBillingContext.SaveChanges();

                                        Billmaster billMaster = _dbTeleBillingContext.Billmaster.FirstOrDefault(x => x.Id == employeeBillMasters[0].BillMasterId && !x.IsDelete);
                                        if (billMaster != null)
                                        {
                                            billMaster.BillStatusId = Convert.ToInt16(EnumList.BillStatus.BillClosed);
                                            billMaster.UpdatedDate  = DateTime.Now;

                                            _dbTeleBillingContext.Update(billMaster);
                                            _dbTeleBillingContext.SaveChanges();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (global::System.Exception ex)
                {
                    throw ex;
                }
            }
        }
Exemple #7
0
 public LogManagement(telebilling_v01Context dbTeleBilling_V01Context, IStringConstant iStringConstant)
 {
     _dbTeleBilling_V01Context = dbTeleBilling_V01Context;
     _iStringConstant          = iStringConstant;
 }