コード例 #1
0
        public async Task <bool> SaveRequestTraseLog(long TransactionId, long Addedby, long actionId = 0, string description = null)
        {
            bool            result     = false;
            Requesttracelog requestlog = new Requesttracelog();

            try
            {
                requestlog.TransactionId = TransactionId;
                requestlog.CreatedById   = Addedby;

                //requestlog.IsMobile = HttpContext.Current.Request.Browser.IsMobileDevice;
                //requestlog.Browser = HttpContext.Current.Request.Browser.Browser;

                requestlog.CreatedDate = DateTime.Now;
                requestlog.ActionId    = actionId;
                requestlog.Description = description;
                await _dbTeleBilling_V01Context.AddAsync(requestlog);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                result = true;
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }
コード例 #2
0
        public async Task <ResponseAC> AddTelephone(long userId, TelephoneDetailAC telephoneDetailAC, string loginUserName)
        {
            ResponseAC responseAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.Telephonenumber.AnyAsync(x => x.TelephoneNumber1.Trim() == telephoneDetailAC.TelephoneNumber1.Trim() && !x.IsDelete))
            {
                Telephonenumber telephoneNumber = _mapper.Map <Telephonenumber>(telephoneDetailAC);
                telephoneNumber.CreatedBy     = userId;
                telephoneNumber.CreatedDate   = DateTime.Now;
                telephoneNumber.IsActive      = true;
                telephoneNumber.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(telephoneNumber);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddTelephone, loginUserName, userId, "Telephone(" + telephoneNumber.TelephoneNumber1 + ")", (int)EnumList.ActionTemplateTypes.Add, telephoneNumber.Id);

                responseAC.StatusCode = Convert.ToInt32(EnumList.ResponseType.Success);
                responseAC.Message    = _iStringConstant.TelphoneAddedSuccessfully;
            }
            else
            {
                responseAC.StatusCode = Convert.ToInt32(EnumList.ResponseType.Error);
                responseAC.Message    = _iStringConstant.TelphoneAlreadyExists;
            }
            return(responseAC);
        }
コード例 #3
0
        public async Task <ResponseAC> AddProvider(long userId, ProviderAC providerAC, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.Provider.AnyAsync(x => x.ContractNumber.ToLower() == providerAC.ContractNumber.ToLower() && !x.IsDelete))
            {
                TeleBillingUtility.Models.Provider provider = new TeleBillingUtility.Models.Provider();
                provider               = _mapper.Map <TeleBillingUtility.Models.Provider>(providerAC);
                provider.IsActive      = true;
                provider.CreatedDate   = DateTime.Now;
                provider.CreatedBy     = userId;
                provider.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(provider);

                await _dbTeleBilling_V01Context.SaveChangesAsync();


                foreach (var serviceType in providerAC.ServiceTypes)
                {
                    Providerservice providerService = new Providerservice();
                    providerService.ProviderId    = provider.Id;
                    providerService.ServiceTypeId = serviceType.Id;
                    await _dbTeleBilling_V01Context.AddAsync(providerService);

                    await _dbTeleBilling_V01Context.SaveChangesAsync();
                }

                #region Added Provider Contact Detail
                List <Providercontactdetail> providerContactDetails = new List <Providercontactdetail>();
                foreach (var item in providerAC.ProviderContactDetailACList)
                {
                    Providercontactdetail providerContectDatail = new Providercontactdetail();
                    providerContectDatail            = _mapper.Map <Providercontactdetail>(item);
                    providerContectDatail.ProviderId = provider.Id;
                    providerContactDetails.Add(providerContectDatail);
                }

                await _dbTeleBilling_V01Context.AddRangeAsync(providerContactDetails);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                #endregion

                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddProvider, loginUserName, userId, "Provider(" + provider.Name + ")", (int)EnumList.ActionTemplateTypes.Add, provider.Id);

                responeAC.Message    = _iStringConstant.ProviderAddedSuccessfully;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            }
            else
            {
                responeAC.Message    = _iStringConstant.ContractNumberExists;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(responeAC);
        }
コード例 #4
0
        public async Task <ResponseAC> AddRole(RoleAC roleAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.MstRole.AnyAsync(x => x.RoleName.ToLower() == roleAC.RoleName.Trim().ToLower() && !x.IsDelete))
            {
                MstRole mstRole = new MstRole();
                mstRole.IsActive      = true;
                mstRole.RoleName      = roleAC.RoleName.Trim();
                mstRole.CreatedBy     = userId;
                mstRole.CreatedDate   = DateTime.Now;
                mstRole.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                try
                {
                    await _dbTeleBilling_V01Context.AddAsync(mstRole);

                    await _dbTeleBilling_V01Context.SaveChangesAsync();

                    await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddRole, loginUserName, userId, "Role(" + roleAC.RoleName.Trim() + ")", (int)EnumList.ActionTemplateTypes.Add, mstRole.RoleId);
                }
                catch (Exception e)
                {
                    throw e;
                }
                responeAC.Message    = _iStringConstant.RoleAddedSuccessfully;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            }
            else
            {
                responeAC.Message    = _iStringConstant.RoleExists;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(responeAC);
        }
コード例 #5
0
        public async Task <ResponseAC> AddDelegate(BillDelegatesAC billDelegatesAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            if (await _dbTeleBilling_V01Context.Billdelegate.FirstOrDefaultAsync(x => x.EmployeeId == billDelegatesAC.Employee.UserId && x.DelegateEmployeeId == billDelegatesAC.DelegateEmployee.UserId && !x.IsDelete) == null)
            {
                TeleBillingUtility.Models.Billdelegate delegateDetail = new TeleBillingUtility.Models.Billdelegate();

                delegateDetail.EmployeeId              = billDelegatesAC.Employee.UserId;
                delegateDetail.DelegateEmployeeId      = billDelegatesAC.DelegateEmployee.UserId;
                delegateDetail.AllowBillApproval       = billDelegatesAC.AllowBillApproval;
                delegateDetail.AllowBillIdentification = billDelegatesAC.AllowBillIdentification;
                delegateDetail.CreatedBy     = userId;
                delegateDetail.CreatedDate   = DateTime.Now;
                delegateDetail.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(delegateDetail);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                responeAC.Message    = _iStringConstant.DelegateAddedSuccessfully;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);

                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddDelegate, loginUserName, userId, "Delegate user", (int)EnumList.ActionTemplateTypes.Add, delegateDetail.Id);
            }
            else
            {
                responeAC.Message    = _iStringConstant.DelegateAlreadyExists;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(responeAC);
        }
コード例 #6
0
        public async Task <ResponseAC> AddTemplate(long userId, TemplateDetailAC templateDetailAC, string loginUserName)
        {
            ResponseAC responseAC = new ResponseAC();

            if (await _dbTeleBilling_V01Context.Emailtemplate.FirstOrDefaultAsync(x => x.EmailTemplateTypeId == templateDetailAC.EmailTemplateTypeId) == null)
            {
                Emailtemplate emailTemplate = _mapper.Map <Emailtemplate>(templateDetailAC);
                emailTemplate.CreatedBy     = userId;
                emailTemplate.CreatedDate   = DateTime.Now;
                emailTemplate.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                await _dbTeleBilling_V01Context.AddAsync(emailTemplate);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                responseAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                responseAC.Message    = _iStringConstant.TemplateAddedSuccessfully;

                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddEmailTemplate, loginUserName, userId, "Email template(" + emailTemplate.Subject + ")", (int)EnumList.ActionTemplateTypes.Add, emailTemplate.Id);
            }
            else
            {
                responseAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                responseAC.Message    = _iStringConstant.TemplateTypeAlreadyExists;
            }
            return(responseAC);
        }
コード例 #7
0
        public async Task <ResponseAC> AddHandset(HandsetDetailAC handsetDetailAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.MstHandsetdetail.AnyAsync(x => x.Name.ToLower().Trim() == handsetDetailAC.Name.ToLower().Trim() && !x.IsDelete))
            {
                MstHandsetdetail mstHandsetDetail = new MstHandsetdetail();
                mstHandsetDetail.Name          = handsetDetailAC.Name.Trim();
                mstHandsetDetail.CreatedBy     = userId;
                mstHandsetDetail.CreatedDate   = DateTime.Now;
                mstHandsetDetail.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(mstHandsetDetail);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                responeAC.Message    = _iStringConstant.HandsetAddedSuccessfully;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddHandset, loginUserName, userId, "Handset(" + mstHandsetDetail.Name + ")", (int)EnumList.ActionTemplateTypes.Add, mstHandsetDetail.Id);
            }
            else
            {
                responeAC.Message    = _iStringConstant.HandsetAlreadyExists;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
            }
            return(responeAC);
        }
コード例 #8
0
        private bool SaveRequestTraseLog(long TransactionId, long Addedby, long actionId = 0, string description = null)
        {
            bool            result     = false;
            Requesttracelog requestlog = new Requesttracelog();

            try
            {
                using (var _dbTeleBillingContext = new telebilling_v01Context())
                {
                    requestlog.TransactionId = TransactionId;
                    requestlog.CreatedById   = Addedby;

                    requestlog.CreatedDate = DateTime.Now;
                    requestlog.ActionId    = actionId;
                    requestlog.Description = description;

                    _dbTeleBillingContext.AddAsync(requestlog);
                    _dbTeleBillingContext.SaveChangesAsync();
                }
                result = true;
            }
            catch (Exception)
            {
                result = false;
            }
            return(result);
        }
コード例 #9
0
        public async Task <ResponseAC> AddPackage(long userId, PackageDetailAC packageDetailAC, string loginUserName)
        {
            ResponseAC responseAC = new ResponseAC();

            if (!await _dbTeleBilling_V01Context.Providerpackage.AnyAsync(x => x.Name.ToLower() == packageDetailAC.Name.ToLower() && !x.IsDelete))
            {
                Providerpackage providerPackage = new Providerpackage();
                providerPackage               = _mapper.Map <Providerpackage>(packageDetailAC);
                providerPackage.CreatedBy     = userId;
                providerPackage.IsActive      = true;
                providerPackage.CreatedDate   = DateTime.Now;
                providerPackage.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                await _dbTeleBilling_V01Context.AddAsync(providerPackage);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddPackage, loginUserName, userId, "Package(" + providerPackage.Name + ")", (int)EnumList.ActionTemplateTypes.Add, providerPackage.Id);

                responseAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                responseAC.Message    = _iStringConstant.PackageAddedSuccessfully;
            }
            else
            {
                responseAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                responseAC.Message    = _iStringConstant.PackageAlreadyExists;
            }
            return(responseAC);
        }
コード例 #10
0
        public async Task <ResponseAC> AddConfiguration(long userId, TeleBillingUtility.Models.Configuration configuration, string loginUserName)
        {
            ResponseAC responseAC = new ResponseAC();

            if (configuration.Id == 0)
            {
                configuration.CreatedBy     = 1;
                configuration.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                configuration.CreatedDate   = DateTime.Now;
                await _dbTeleBilling_V01Context.AddAsync(configuration);

                await _dbTeleBilling_V01Context.SaveChangesAsync();

                responseAC.Message = _iStringConstant.ConfigurationAddedSuccessfully;
            }
            else
            {
                TeleBillingUtility.Models.Configuration configurationObj = await _dbTeleBilling_V01Context.Configuration.FirstAsync(x => x.Id == configuration.Id);

                #region Transaction Log Entry
                if (configurationObj.TransactionId == null)
                {
                    configurationObj.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
                }

                var jsonSerailzeObj = JsonConvert.SerializeObject(configurationObj);
                await _iLogManagement.SaveRequestTraseLog(Convert.ToInt64(configurationObj.TransactionId), userId, Convert.ToInt64(EnumList.TransactionTraseLog.UpdateRecord), jsonSerailzeObj);

                #endregion
                configurationObj             = _mapper.Map(configuration, configurationObj);
                configurationObj.UpdatedBy   = 1;
                configurationObj.UpdatedDate = DateTime.Now;

                _dbTeleBilling_V01Context.Update(configurationObj);
                await _dbTeleBilling_V01Context.SaveChangesAsync();

                responseAC.Message = _iStringConstant.ConfigurationUpdateSuccessfully;
            }
            responseAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.UpdateReminderNotificaiton, loginUserName, userId, "Reminder & notification", (int)EnumList.ActionTemplateTypes.ReminderNotificaiton, configuration.Id);

            return(responseAC);
        }
コード例 #11
0
        public async Task <ResponseAC> AddOperatorCallLog(long userId, OperatorCallLogDetailAC operatorCallLogDetailAC, string loginUserName)
        {
            ResponseAC      response     = new ResponseAC();
            Operatorcalllog operatorCall = _mapper.Map <Operatorcalllog>(operatorCallLogDetailAC);

            operatorCall.CreatedBy     = userId;
            operatorCall.CreatedDate   = DateTime.Now;
            operatorCall.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();
            await _dbTeleBilling_V01Context.AddAsync(operatorCall);

            await _dbTeleBilling_V01Context.SaveChangesAsync();

            await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddOperatorCallLog, loginUserName, userId, "Operator call log(Dialed Number:" + operatorCall.DialedNumber + "Extensino Number:" + operatorCall.ExtensionNumber + ")", (int)EnumList.ActionTemplateTypes.Add, operatorCall.Id);

            response.Message    = _iStringConstant.OperatorCallLogAddedSuccessfully;
            response.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
            return(response);
        }
コード例 #12
0
        public async Task AddedReminderNotificationLog(long emailTemplateTypeId, long?employeeBillId, bool isReminderMail, string emailTo)
        {
            Emailtemplate emailTemplate = await _dbTeleBilling_V01Context.Emailtemplate.FirstOrDefaultAsync(x => x.EmailTemplateTypeId == emailTemplateTypeId);

            if (emailTemplate != null)
            {
                Emailreminderlog newEmailReminderLog = new Emailreminderlog();
                newEmailReminderLog.CreatedDate    = DateTime.Now;
                newEmailReminderLog.IsReminderMail = isReminderMail;
                newEmailReminderLog.TemplateId     = emailTemplate.Id;
                newEmailReminderLog.EmployeeBillId = employeeBillId;
                newEmailReminderLog.EmailTo        = emailTo != null ? emailTo : string.Empty;

                await _dbTeleBilling_V01Context.AddAsync(newEmailReminderLog);

                await _dbTeleBilling_V01Context.SaveChangesAsync();
            }
        }
コード例 #13
0
        public async Task <ResponseAC> AddEmployee(MstEmployeeAC employee, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            try
            {
                if (employee != null)
                {
                    string pfNumber = employee.EmpPFNumber;
                    if (!await checkPFNumberUnique(pfNumber, 0))
                    {
                        MstEmployee mstEmployee = new MstEmployee();
                        mstEmployee.FullName        = employee.FullName;
                        mstEmployee.ExtensionNumber = employee.ExtensionNumber;
                        mstEmployee.EmpPfnumber     = employee.EmpPFNumber;
                        mstEmployee.EmailId         = employee.EmailId;

                        string randomPassword = "******";
                        string randomPadding  = CreatePassword(4);
                        mstEmployee.Password     = randomPassword + randomPadding;
                        mstEmployee.RoleId       = employee.RoleId;
                        mstEmployee.IsActive     = true;
                        mstEmployee.IsSystemUser = true;

                        mstEmployee.DepartmentId      = employee.DepartmentId;
                        mstEmployee.Designation       = employee.Designation;
                        mstEmployee.Description       = employee.Description;
                        mstEmployee.BusinessUnitId    = employee.BusinessUnitId;
                        mstEmployee.CostCenterId      = employee.CostCenterId;
                        mstEmployee.CountryId         = employee.CountryId;
                        mstEmployee.IsPresidentOffice = employee.IsPresidentOffice;
                        if (employee.ManagerEmployee != null)
                        {
                            if (employee.ManagerEmployee.UserId > 0)
                            {
                                mstEmployee.LineManagerId = employee.ManagerEmployee.UserId;
                            }
                        }

                        if (mstEmployee.LineManagerId == 0)
                        {
                            responeAC.Message    = "Line Manager is not valid !";
                            responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                            return(responeAC);
                        }



                        mstEmployee.CreatedBy     = userId;
                        mstEmployee.CreatedDate   = DateTime.Now;
                        mstEmployee.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                        await _dbTeleBilling_V01Context.AddAsync(mstEmployee);

                        await _dbTeleBilling_V01Context.SaveChangesAsync();

                        responeAC.Message    = "Employee Added Successfully !";
                        responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                        await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddEmployee, loginUserName, userId, "Employee(" + mstEmployee.FullName + ")", (int)EnumList.ActionTemplateTypes.Add, mstEmployee.UserId);

                        #region Send Email for Registration Confirmation
                        EmployeeProfileAC empDetail = new EmployeeProfileAC();
                        try
                        {
                            empDetail = await GetUserProfile(mstEmployee.UserId);

                            if (empDetail != null)
                            {
                                if (empDetail.UserProfileData.UserId > 0)
                                {
                                    Dictionary <string, string> replacement = new Dictionary <string, string>();
                                    replacement.Add("{newEmpName}", empDetail.UserProfileData.FullName);
                                    replacement.Add("{PFNumber}", empDetail.UserProfileData.EmpPFNumber);
                                    replacement.Add("{Email}", empDetail.UserProfileData.EmailId);
                                    replacement.Add("{Password}", empDetail.UserProfileData.Password);

                                    replacement.Add("{EmpDesignation}", empDetail.UserProfileData.Designation);
                                    replacement.Add("{Emplocation}", empDetail.UserProfileData.Country);
                                    replacement.Add("{lineManagerDepartment}", empDetail.UserProfileData.LineManager);
                                    replacement.Add("{EmpDepartment}", empDetail.UserProfileData.Department);
                                    replacement.Add("{EmpCostCenter}", empDetail.UserProfileData.CostCenter);
                                    replacement.Add("{EmpBusinessUnit}", empDetail.UserProfileData.BusinessUnit);
                                    bool   issent  = false;
                                    string EmailId = empDetail.UserProfileData.EmailId;

                                    if (!(string.IsNullOrEmpty(empDetail.UserProfileData.EmailId) || empDetail.UserProfileData.EmailId == "n/a"))
                                    {
                                        issent = await _iEmailSender.SendEmail(Convert.ToInt64(EnumList.EmailTemplateType.NewRegistrationConfirmation), replacement, employee.EmailId);
                                    }
                                    else
                                    {// get line manager email
                                        string linemanagerEmail = await _dbTeleBilling_V01Context.MstEmployee.Where(x => x.UserId == mstEmployee.LineManagerId).Select(x => x.EmailId).FirstOrDefaultAsync();

                                        issent = await _iEmailSender.SendEmail(Convert.ToInt64(EnumList.EmailTemplateType.NewRegistrationInYourTeam), replacement, linemanagerEmail);
                                    }

                                    if (!issent)
                                    {
                                        responeAC.StatusCode = Convert.ToInt32(EnumList.ResponseType.Success);
                                        responeAC.Message    = "Employee Added Successfully! We Could Not Sent Mail Confirmation.";
                                    }
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            responeAC.StatusCode = Convert.ToInt32(EnumList.ResponseType.Success);
                            responeAC.Message    = "Employee Added Successfully! Error :" + e.Message + " We Could Not Sent Mail Confirmation.";
                        }

                        #endregion

                        return(responeAC);
                    }
                    else
                    {
                        responeAC.Message    = "PFNumber is already exists!";
                        responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                        return(responeAC);
                    }
                }
                else
                {
                    responeAC.Message    = _iStringConstant.DataNotFound;
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                    return(responeAC);
                }
            }
            catch (Exception e)
            {
                responeAC.Message    = "Error : " + e.Message;
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                return(responeAC);
            }
        }
コード例 #14
0
        public async Task <ResponseAC> AddExcelMapping(ExcelMappingAC excelMappingAC, long userId, string loginUserName)
        {
            ResponseAC responeAC = new ResponseAC();

            try
            {
                if (excelMappingAC.dbfieldList.Count() == 0)
                {
                    responeAC.Message    = "Mapping Column Is Missing";
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                    return(responeAC);
                }

                if (excelMappingAC != null)
                {
                    bool IsExistsServices = false;
                    IsExistsServices = await checkExcelMappingExistsForServices(excelMappingAC);

                    if (IsExistsServices)
                    {
                        responeAC.Message    = "excel mapping is already exists";
                        responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                        return(responeAC);
                    }
                }

                if ((await _dbTeleBilling_V01Context.Mappingexcel.FirstOrDefaultAsync(x => x.ProviderId == excelMappingAC.ProviderId && x.ServiceTypeId == excelMappingAC.ServiceTypeId && !x.IsDelete)) == null)
                {
                    var providerData = await _dbTeleBilling_V01Context.Provider.FirstOrDefaultAsync(x => x.Id == excelMappingAC.ProviderId);

                    Mappingexcel mappingexcel = new Mappingexcel();
                    mappingexcel.Id                      = 0;
                    mappingexcel.IsActive                = true;
                    mappingexcel.ProviderId              = excelMappingAC.ProviderId;
                    mappingexcel.CurrencyId              = providerData.CurrencyId;
                    mappingexcel.ServiceTypeId           = excelMappingAC.ServiceTypeId;
                    mappingexcel.HaveHeader              = excelMappingAC.HaveHeader;
                    mappingexcel.HaveTitle               = excelMappingAC.HaveTitle;
                    mappingexcel.TitleName               = excelMappingAC.TitleName;
                    mappingexcel.WorkSheetNo             = Convert.ToInt64(excelMappingAC.WorkSheetNo);
                    mappingexcel.ExcelColumnNameForTitle = string.IsNullOrEmpty(excelMappingAC.ExcelColumnNameForTitle) ? "" : excelMappingAC.ExcelColumnNameForTitle;
                    mappingexcel.ExcelReadingColumn      = string.IsNullOrEmpty(excelMappingAC.ExcelReadingColumn) ? "0" : excelMappingAC.ExcelReadingColumn;
                    mappingexcel.CreatedBy               = userId;
                    mappingexcel.CreatedDate             = DateTime.Now;
                    mappingexcel.IsCommonMapped          = false;
                    mappingexcel.MappedMappingId         = 0;
                    mappingexcel.MappedServiceTypeId     = 0;
                    mappingexcel.IsDelete                = false;


                    mappingexcel.TransactionId = _iLogManagement.GenerateTeleBillingTransctionID();

                    await _dbTeleBilling_V01Context.AddAsync(mappingexcel);

                    await _dbTeleBilling_V01Context.SaveChangesAsync();

                    responeAC.Message    = _iStringConstant.ExcelMappingAddedSuccessfully;
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                    await _iLogManagement.SaveAuditActionLog((int)EnumList.AuditLogActionType.AddExcelMapping, loginUserName, userId, "Excel mapping", (int)EnumList.ActionTemplateTypes.Add, mappingexcel.Id);

                    if (mappingexcel.Id > 0)
                    {
                        #region ---> Add Common Servive if exists
                        foreach (var serviceType in excelMappingAC.ServiceTypeIdInline)
                        {
                            Mappingexcel mappingexcelCommon = new Mappingexcel();
                            mappingexcelCommon.Id                      = 0;
                            mappingexcelCommon.IsActive                = true;
                            mappingexcelCommon.ProviderId              = excelMappingAC.ProviderId;
                            mappingexcelCommon.CurrencyId              = providerData.CurrencyId;
                            mappingexcelCommon.ServiceTypeId           = serviceType.Id;
                            mappingexcelCommon.HaveHeader              = excelMappingAC.HaveHeader;
                            mappingexcelCommon.HaveTitle               = excelMappingAC.HaveTitle;
                            mappingexcelCommon.TitleName               = excelMappingAC.TitleName;
                            mappingexcelCommon.WorkSheetNo             = Convert.ToInt64(excelMappingAC.WorkSheetNo);
                            mappingexcelCommon.ExcelColumnNameForTitle = excelMappingAC.ExcelColumnNameForTitle;
                            mappingexcelCommon.ExcelReadingColumn      = string.IsNullOrEmpty(excelMappingAC.ExcelReadingColumn) ? "" : excelMappingAC.ExcelReadingColumn;
                            mappingexcelCommon.CreatedBy               = userId;
                            mappingexcelCommon.CreatedDate             = DateTime.Now;
                            mappingexcelCommon.TransactionId           = mappingexcel.TransactionId;
                            mappingexcelCommon.IsCommonMapped          = true;
                            mappingexcelCommon.MappedMappingId         = mappingexcel.Id;
                            mappingexcelCommon.MappedServiceTypeId     = mappingexcel.ServiceTypeId;

                            await _dbTeleBilling_V01Context.AddAsync(mappingexcelCommon);

                            await _dbTeleBilling_V01Context.SaveChangesAsync();
                        }

                        #endregion


                        #region --> ADD Mapping column Details
                        if (excelMappingAC.dbfieldList.Count() > 0)
                        {
                            List <Mappingexcelcolumn> mappingExcelColumnslst = new List <Mappingexcelcolumn>();

                            foreach (var item in excelMappingAC.dbfieldList)
                            {
                                if (!string.IsNullOrEmpty(item.ColumnAddress))
                                {
                                    Mappingexcelcolumn excelColumn = new Mappingexcelcolumn();
                                    excelColumn.MappingExcelId            = mappingexcel.Id;
                                    excelColumn.MappingServiceTypeFieldId = item.Id;
                                    excelColumn.ExcelcolumnName           = item.ColumnAddress;
                                    excelColumn.FormatField = item.FormatField;
                                    mappingExcelColumnslst.Add(excelColumn);
                                }
                            }
                            await _dbTeleBilling_V01Context.AddRangeAsync(mappingExcelColumnslst);

                            await _dbTeleBilling_V01Context.SaveChangesAsync();

                            responeAC.Message    = _iStringConstant.ExcelMappingAddedSuccessfully;
                            responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Success);
                        }
                        #endregion
                    }
                }
                else
                {
                    responeAC.Message    = _iStringConstant.ExcelMappingExists;
                    responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                }
                return(responeAC);
            }
            catch (Exception e)
            {
                responeAC.Message    = e.Message.ToString();
                responeAC.StatusCode = Convert.ToInt16(EnumList.ResponseType.Error);
                return(responeAC);
            }
        }