public async Task <ActionResult> Detail(int?id, bool partial = false) { UserModel user = JwtTokenProvider.GetUserModel(Request.Cookies["token"].Value); var audits = await _prepareService.GetAudits(id); if (!audits.Any()) { return(HttpNotFound()); } var audit = audits.First(); if (!user.Roles.Any(r => (new[] { KnownRoles.Administrator, KnownRoles.Supervisor, KnownRoles.Documentalist }.Contains(r))) && audit.AuditorId != user.UserId && !audit.Inspection.InspectionSteps.Any(s => s.InspectorId == user.UserId)) { return(RedirectToAction("Index", new { userId = user.UserId, partial = partial })); } var inspection = await _prepareService.GetInspection(audit.InspectionId); var inspectionSteps = InspectionController.GetInspectionStepAndChilds(inspection, inspection.Publication.PublishedActions.Distinct() .OrderBy(a => a.WBSParts, new WBSPartsComparer()).ToList()); var anomalies = await _prepareService.GetAnomalies(audit.InspectionId); var model = AuditMapper.ToAuditViewModel(audits.FirstOrDefault()); model.Inspection = InspectionMapper.ToInspectionViewModel(inspection, inspectionSteps, anomalies.ToList()); if (partial) { return(PartialView(model)); } return(View(model)); }
/// <summary> /// Determines whether [is member valid] [the specified member reg bo]. /// </summary> /// <param name="memberRegBO">The member reg bo.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <Tuple <int, string, string> > IsMemberValid(MemberRegistrationBO memberRegBO, AuditLogBO auditLogBO) { var statusCode = MemberRegistrationVerification.InvalidMemberId; var externalId = memberRegBO.ExternalId; var memberVerificationStatus = await VerifyMemberDetails(memberRegBO, statusCode, externalId); await AuditMapper.MapAuditAndQueue(auditLogBO, AuditAction.Select, null); return(Tuple.Create((int)memberVerificationStatus.Item1, memberVerificationStatus.Item2, memberVerificationStatus.Item3)); }
/// <summary> /// Updates the payment information. /// </summary> /// <param name="paymentInformation">The payment information.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <int> UpdatePaymentInformation(PaymentInformationBO paymentInformation, AuditLogBO auditLogBO) { var rows = 0; var statusCode = PaymentUpdate.IsNotUpdated; if (paymentInformation != null) { var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(a => a, b => b.UserId == paymentInformation.UserId); var memberPayInfoToUpdate = await _unitOfWork.GetRepository <MemberSubscription>().GetPagedListAsync(a => a, predicate: b => b.MemberId == member.MemberId, pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); var response = await UpdatePaymentDetailsToAdmin123(paymentInformation, member.Admin123Id, member.MemberId, member.MemberDetailId); //Updating payment information Admin123 if (response.Trim().ToLower().Equals("ok")) { foreach (var memberPaymentInfo in memberPayInfoToUpdate.Items) { if (paymentInformation.IsCardUpdate) { memberPaymentInfo.RoutingNumber = string.Empty; memberPaymentInfo.CardOrAccountNumber = paymentInformation.CreditCardNumber; memberPaymentInfo.PaymentType = (int)PaymentType.CC; memberPaymentInfo.ModifiedBy = paymentInformation.UserId; memberPaymentInfo.ModifiedOn = DateTime.Now; } else { memberPaymentInfo.CardOrAccountNumber = paymentInformation.BankAccountNumber; memberPaymentInfo.PaymentType = (int)PaymentType.ACH; memberPaymentInfo.RoutingNumber = paymentInformation.BankRoutingNumber; memberPaymentInfo.ModifiedBy = paymentInformation.UserId; memberPaymentInfo.ModifiedOn = DateTime.Now; } _unitOfWork.GetRepository <MemberSubscription>().Update(memberPaymentInfo); } rows = _unitOfWork.SaveChanges(); if (rows > 0) { statusCode = PaymentUpdate.IsUpdated; } } //Log audit for update action on Payment Information await AuditMapper.AuditLogging(auditLogBO, paymentInformation.MemberId, AuditAction.Update, paymentInformation); } return((int)statusCode); }
// NOT USED public async Task <bool> CollectAndSendAudit() { var auditTypes = await _notificationService.GetNotificationTypes(NotificationCategory.Audit); var auditType = auditTypes.FirstOrDefault(); var audits = await _notificationService.GetAuditReport(); if (!audits.Any()) { return(false); } var auditsModel = AuditMapper.ToAuditViewModels(audits); string pdfString = _notificationService.RenderViewToString(auditsModel, pdfTemplatePath, auditType.NotificationTypeSetting.PdfTemplate); _notificationService.RenderViewToPdf(pdfString, pdfBase, baseUrl); return(true); }
/// <summary> /// Marks the message as read. /// </summary> /// <param name="memberMessageId">The member message identifier.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <int> MarkMessageAsRead(long memberMessageId, AuditLogBO auditLogBO) { var rows = 0; var memberMessageRepo = _unitOfWork.GetRepository <Messages>(); var memberMessage = await memberMessageRepo.FindAsync(memberMessageId); var existingMemberMessage = new Messages(); existingMemberMessage = existingMemberMessage.Clone(memberMessage); if (memberMessage != null) { memberMessage.IsRead = true; rows = _unitOfWork.SaveChanges(); } //Log audit for update action on MemberMessage await AuditMapper.AuditLogging(auditLogBO, memberMessageId, AuditAction.Update, null); return(rows); }
/// <summary> /// Deletes the message. /// </summary> /// <param name="memberMessageId">The member message identifier.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <int> DeleteMessage(List <long> memberMessageId, AuditLogBO auditLogBO) { var rows = 0; var memberMessage = await _unitOfWork.GetRepository <Messages>().GetPagedListAsync(predicate: msg => msg.PortalId == (int)Portals.MemberPortal && memberMessageId.Contains(msg.MessageId), pageIndex: 0, pageSize: int.MaxValue); var existingMemberMessages = new List <Messages>(); existingMemberMessages = existingMemberMessages.Clone(memberMessage.Items.ToList()); if (memberMessage != null && memberMessage.Items.Any()) { _unitOfWork.GetRepository <Messages>().Delete(memberMessage.Items); rows = await _unitOfWork.SaveChangesAsync(); } //Log audit for update action on MemberMessage await AuditMapper.AuditLogging(auditLogBO, memberMessageId[0], AuditAction.Delete, null); return(rows); }
/// <summary> /// Updates the security questions by user identifier. /// </summary> /// <param name="updatedSecurityQuestions">The updated security questions.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <bool> UpdateSecurityQuestionsByUserId(List <SecurityQuestionAnswersBO> updatedSecurityQuestions, AuditLogBO auditLogBO) { var rows = 0; var isUpdated = false; if (updatedSecurityQuestions != null) { var securityQA = await _unitOfWork.GetRepository <UserSecurityQuestionAnswers>().GetPagedListAsync( a => a, predicate: b => b.UserId == updatedSecurityQuestions[0].UserId, pageIndex: 0, pageSize: 3); _unitOfWork.GetRepository <UserSecurityQuestionAnswers>().Delete(securityQA.Items); var userSecurityQA = updatedSecurityQuestions.Select(qa => new UserSecurityQuestionAnswers { UserId = qa.UserId, SecurityQuestionId = qa.SecurityQuestionId, Answer = EncryptionHelper.HashCode(qa.Answer), CreatedOn = DateTime.Now, CreatedBy = qa.UserId, ModifiedOn = DateTime.Now, ModifiedBy = qa.UserId }); await _unitOfWork.GetRepository <UserSecurityQuestionAnswers>().InsertAsync(userSecurityQA); rows = _unitOfWork.SaveChanges(); if (rows > 0) { isUpdated = true; } } await AuditMapper.AuditLogging(auditLogBO, updatedSecurityQuestions[0].UserId, AuditAction.Update, updatedSecurityQuestions); return(isUpdated); }
public async Task <ActionResult> Index(int?userId, bool partial = false) { UserModel user = JwtTokenProvider.GetUserModel(Request.Cookies["token"].Value); if (!userId.HasValue && !user.Roles.Any(r => (new[] { KnownRoles.Administrator, KnownRoles.Supervisor, KnownRoles.Documentalist }.Contains(r)))) { return(RedirectToAction("Index", new { userId = user.UserId, partial = partial })); } var audits = await _prepareService.GetAudits(); if (userId.HasValue) { audits = audits.Where(a => a.AuditorId == userId.Value || a.Inspection.InspectionSteps.Any(s => s.InspectorId == userId.Value)); } var model = AuditMapper.ToAuditManageViewModel(audits); if (partial) { return(PartialView(model)); } return(View(model)); }
/// <summary> /// Updates the member demographics. /// </summary> /// <param name="memberDemographics">The member demographics.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <int> UpdateMemberDemographics(MemberDemographicsBO memberDemographics, AuditLogBO auditLogBO) { var isUpdateCount = 0; var admin123Response = string.Empty; if (memberDemographics != null) { //Update Member PhoneNumber, Email & Address in Admin123 admin123Response = await InvokeAdmin123Async(memberDemographics); if (admin123Response.Equals(HttpStatusCode.OK.ToString())) { // Update Member PhoneNumber, Email & Address in MemberPortal Database if (memberDemographics.MemberAddress != null) { var memberAddressRepo = _unitOfWork.GetRepository <MemberAddress>(); foreach (var addrToUpdate in memberDemographics.MemberAddress) { if (addrToUpdate.Id != 0) { var repoMemberAddress = memberAddressRepo.GetFirstOrDefault(a => a, b => b.MemberId == addrToUpdate.Id); var existingMemberAddress = new MemberAddress(); existingMemberAddress = existingMemberAddress.Clone(repoMemberAddress); if (repoMemberAddress != null) { repoMemberAddress.AddressLine1 = addrToUpdate.AddressLine1; repoMemberAddress.AddressLine2 = addrToUpdate.AddressLine2; repoMemberAddress.City = addrToUpdate.City; repoMemberAddress.StateCode = addrToUpdate.StateCode; repoMemberAddress.ZipCode = addrToUpdate.ZipCode; } var isInvalidState = await ValidateState(addrToUpdate.StateCode); if (!isInvalidState) { _unitOfWork.GetRepository <MemberAddress>().Update(repoMemberAddress); isUpdateCount += _unitOfWork.SaveChanges(); } else { return((int)Utilities.Enumerations.ValidateState.StateInvalid); } //Log audit for update action on BrokerAddress await AuditMapper.AuditLogging(auditLogBO, memberDemographics.MemberID, AuditAction.Update, repoMemberAddress, existingMemberAddress); } } } if (memberDemographics.MemberDetails != null && Convert.ToInt64(memberDemographics.MemberDetails.MemberId) != 0) { var memberDetailsRepo = _unitOfWork.GetRepository <MemberDetail>(); var memberContact = await memberDetailsRepo.GetFirstOrDefaultAsync(a => a, b => b.MemberDetailId == memberDemographics.MemberDetailId); var existingMemberDetail = new MemberDetail(); existingMemberDetail = existingMemberDetail.Clone(memberContact); memberContact.PhoneNumber = memberDemographics.MemberDetails.PhoneNumber; memberContact.EmailId = memberDemographics.MemberDetails.Email; _unitOfWork.GetRepository <MemberDetail>().Update(memberContact); isUpdateCount += _unitOfWork.SaveChanges(); //Log audit for update action await AuditMapper.AuditLogging(auditLogBO, memberDemographics.MemberDetailId, AuditAction.Update, memberContact, existingMemberDetail); } } } if (isUpdateCount > 1) { return((int)EditInformationStatus.Success); } else { return((int)EditInformationStatus.Fail); } }
/// <summary> /// Updates the digital document identifier. /// </summary> /// <param name="digitalDoc">The digital document.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> /// <exception cref="Exception">Unexpected Case</exception> public async Task <bool> UpdateDigitalDocumentId(DigitalDocumentBO digitalDoc, AuditLogBO auditLogBO) { var response = false; if (digitalDoc != null) { switch (digitalDoc.DocumentType.ToLower()) { case MemberConstants.ClaimsEOB: //Updating EOB document id in Claims table var claimsRepository = _unitOfWork.GetRepository <Claims>(); var claim = await claimsRepository.GetFirstOrDefaultAsync(predicate : c => Convert.ToInt64(c.ClaimsNumber) == digitalDoc.Identifier); if (claim != null) { claim.DocumentId = digitalDoc.DocumentId; claimsRepository.Update(claim); } break; case MemberConstants.ProductGuideBook: //Updating product guidebook id in product table var productRepository = _unitOfWork.GetRepository <Product>(); var product = await productRepository.GetFirstOrDefaultAsync(predicate : prd => prd.ProductCode == digitalDoc.Identifier); if (product != null) { product.DocumentId = digitalDoc.DocumentId; productRepository.Update(product); } break; case MemberConstants.DigitalIDCard: //Updating digital id card id in member/member dependent table if (digitalDoc.MemberType.ToLower().Equals(MemberConstants.Self)) { var memberRepository = _unitOfWork.GetRepository <Member>(); var member = await memberRepository.GetFirstOrDefaultAsync(predicate : m => m.UserId == digitalDoc.Identifier); if (member != null) { member.DigitalIdcardId = digitalDoc.DocumentId; memberRepository.Update(member); } } else if (digitalDoc.MemberType.ToLower().Equals(MemberConstants.Dependent)) { var memberDependentRepository = _unitOfWork.GetRepository <MemberDependent>(); var memberDependent = await memberDependentRepository.GetFirstOrDefaultAsync(predicate : m => m.MemberDetailId == digitalDoc.Identifier); if (memberDependent != null) { memberDependent.DigitalIdcardId = digitalDoc.DocumentId; memberDependentRepository.Update(memberDependent); } } break; case MemberConstants.AvatarImage: //Updating avatar image id in member details table var memberDetailRepository = _unitOfWork.GetRepository <MemberDetail>(); if (digitalDoc.MemberType.ToLower().Equals(MemberConstants.Self)) { var memberRepository = _unitOfWork.GetRepository <Member>(); var member = await memberRepository.GetFirstOrDefaultAsync(predicate : m => m.UserId == digitalDoc.Identifier); if (member != null) { var memberDetail = await memberDetailRepository.GetFirstOrDefaultAsync(predicate : md => md.MemberDetailId == member.MemberDetailId); if (memberDetail != null) { memberDetail.AvatarImageId = digitalDoc.DocumentId; memberDetailRepository.Update(memberDetail); } } } else if (digitalDoc.MemberType.ToLower().Equals(MemberConstants.Dependent)) { var memberDetail = await memberDetailRepository.GetFirstOrDefaultAsync(predicate : md => md.MemberDetailId == digitalDoc.Identifier); if (memberDetail != null) { memberDetail.AvatarImageId = digitalDoc.DocumentId; memberDetailRepository.Update(memberDetail); } } break; default: break; } var rowsAffected = await _unitOfWork.SaveChangesAsync(); if (rowsAffected > 0) { response = true; } //Log audit await AuditMapper.AuditLogging(auditLogBO, null, AuditAction.Update, digitalDoc); } return(response); }
/// <summary> /// To save member feedback to db /// </summary> /// <param name="memberFeedbackBO"></param> /// <param name="auditLogBO"></param> /// <returns></returns> public async Task <bool> SaveMemberFeedback(MemberFeedbackBO memberFeedbackBO, AuditLogBO auditLogBO) { var returnValue = false; if (memberFeedbackBO != null) { var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(i => i, u => u.UserId == memberFeedbackBO.UserId); if (member != null) { var memberDetails = await _unitOfWork.GetRepository <MemberDetail>().GetFirstOrDefaultAsync(i => i, m => m.MemberDetailId == member.MemberDetailId); memberFeedbackBO.MemberExternalId = member.ExternalId; var memberFeedbackInfo = MemberMapper.Map(memberFeedbackBO); _unitOfWork.GetRepository <MemberFeedback>().Insert(memberFeedbackInfo); var recordsInserted = await _unitOfWork.SaveChangesAsync(); if (recordsInserted > 0) { returnValue = true; var mailIdFrom = ""; var mailTo = ""; var body = ""; var subject = ""; if (memberFeedbackBO.SourceId == (int)MemberFeedbackType.ShareStory) { mailTo = memberFeedbackBO.Email; var notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberStory); if (notificaton != null) { subject = notificaton.Subject; body = notificaton.Content.Replace("{firstname}", memberDetails.FirstName).Replace("{lastname}", memberDetails.LastName); mailIdFrom = notificaton.From; } notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberStoryTestimonial); if (notificaton != null) { var marketingMailSubject = notificaton.Subject; var marketingMailBody = notificaton.Content.Replace("{firstname}", memberDetails.FirstName). Replace("{lastname}", memberDetails.LastName).Replace("{email}", memberFeedbackBO.Email). Replace("{message}", memberFeedbackBO.Message); mailIdFrom = notificaton.From; var email = MemberMapper.Map(_appSettings.Value.AlieraMarketingEmail, marketingMailBody, marketingMailSubject, _appSettings, mailIdFrom); await _emailService.SendEmailAsync(email); } } else if (memberFeedbackBO.SourceId == (int)MemberFeedbackType.ShareContactInfo) { mailTo = memberFeedbackBO.InquiryTypeEmail; var notificaton = await _unitOfWork.GetRepository <Notification>().GetFirstOrDefaultAsync(predicate: n => n.Type == (int)EmailType.MemberContactSubmission); if (notificaton != null) { subject = notificaton.Subject; body = notificaton.Content.Replace("{firstname}", memberDetails.FirstName). Replace("{lastname}", memberDetails.LastName).Replace("{email}", memberFeedbackBO.Email). Replace("{message}", memberFeedbackBO.Message).Replace("{phonenumber}", memberFeedbackBO.PhoneNumber) .Replace("{Inquirytype}", memberFeedbackBO.InquiryType); mailIdFrom = notificaton.From; } } var emailDetails = MemberMapper.Map(mailTo, body, subject, _appSettings, mailIdFrom); await _emailService.SendEmailAsync(emailDetails); } } } await AuditMapper.AuditLogging(auditLogBO, memberFeedbackBO.UserId, AuditAction.Insert, memberFeedbackBO); return(returnValue); }
/// <summary> /// Registers the member. /// </summary> /// <param name="memberRegistration">The member registration.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> public async Task <int> RegisterMember(MemberRegistrationBO memberRegistration, AuditLogBO auditLogBO) { bool isSuccessful; var externalId = memberRegistration.ExternalId; var statusCode = MemberRegistrationVerification.InvalidMemberId; var isRegistrationSuccessful = 0; if (!string.IsNullOrEmpty(externalId)) { statusCode = await VerifyMemberDetails(memberRegistration, externalId, statusCode); if (statusCode == MemberRegistrationVerification.Verified) { var user = MemberMapper.Map(memberRegistration); using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { //_unitOfWork.GetRepository<Users>().Insert(user); //_unitOfWork.DbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Users ON"); //isRegistrationSuccessful += _unitOfWork.SaveChanges(); //_unitOfWork.DbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT dbo.Users OFF"); var newUserIdSecurityQA = memberRegistration.SecurityQuestionAnswer.Select(item => new UserSecurityQuestionAnswers { UserId = user.UserId, SecurityQuestionId = item.SecurityQuestionId, Answer = EncryptionHelper.HashCode(item.Answer), CreatedBy = item.CreatedBy, CreatedOn = DateTime.UtcNow, ModifiedBy = item.ModifiedBy, ModifiedOn = memberRegistration.ModifiedOn }); _unitOfWork.GetRepository <UserSecurityQuestionAnswers>().Insert(newUserIdSecurityQA); isRegistrationSuccessful += _unitOfWork.SaveChanges(); } catch (Exception ex) { scope.Dispose(); throw; } scope.Complete(); } isSuccessful = isRegistrationSuccessful > 0; if ((isSuccessful && memberRegistration.UpdateToAdmin123) || memberRegistration.PhoneNumberNotFound || memberRegistration.EmailNotFound) { await this.UpateMemberEmailAndPhoneNumber(memberRegistration); await this.UpateEmailAndPhoneNumberToAdmin123(memberRegistration); } await AuditMapper.AuditLogging(auditLogBO, null, AuditAction.Update, memberRegistration); } else { isSuccessful = false; } if (isSuccessful) { await SendRegistrationConformationMail(memberRegistration); } } return((int)statusCode); }
public async Task ExportToExcel(string GridModel, string gridId, int id, string process, int?userId) { ExcelExport exp = new ExcelExport(); GridProperties obj = (GridProperties)Syncfusion.JavaScript.Utils.DeserializeToModel(typeof(GridProperties), GridModel); //Clear if there are any filter columns //syncfusion bug in exporting while in filter mode obj.FilterSettings.FilteredColumns.Clear(); grid = gridId; count = 0; if (gridId == "Audits") { var audits = await _prepareService.GetAudits(); if (userId.HasValue) { audits = audits.Where(a => a.AuditorId == userId.Value || a.Inspection.InspectionSteps.Any(s => s.InspectorId == userId.Value)); } var auditManage = AuditMapper.ToAuditManageViewModel(audits); //var dataSource = auditManage.Audits.ToList(); //auditViewModel = dataSource; //var currentDate = DateTime.Today.ToShortDateString().Replace("/", "-"); //obj.ServerExcelQueryCellInfo = QueryCellInfo; //exp.Export(obj, dataSource, "Audits " + currentDate + ".xlsx", ExcelVersion.Excel2013, false, false, "flat-saffron"); using (ExcelEngine excelEngine = new ExcelEngine()) { // Set the default application version as Excel 2016. excelEngine.Excel.DefaultVersion = ExcelVersion.Excel2016; //var group1 = auditManage.Audits.ToList(); var allAudits = auditManage.Audits.ToList(); int i = 0; //Create a workbook with a worksheet. IWorkbook workbook = excelEngine.Excel.Workbooks.Create(audits.Select(a => a.Survey).Distinct().Count()); foreach (var survey in audits.Select(a => a.Survey).Distinct()) { IWorksheet worksheet = workbook.Worksheets[i]; DataTable tbl = new DataTable(); //fill columns tbl.Columns.Add(LocalizedStrings.GetString("AuditDate"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("Schedule"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("Team"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("Auditor"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("Auditee"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("AuditStatus"), typeof(string)); tbl.Columns.Add(LocalizedStrings.GetString("StandardAuditee"), typeof(string)); foreach (var surveyItem in survey.SurveyItems) { tbl.Columns.Add(surveyItem.Query, typeof(int)); } tbl.Columns.Add("Score", typeof(int)); tbl.Columns.Add(LocalizedStrings.GetString("Comment"), typeof(string)); //fill rows foreach (var audit in auditManage.Audits.Where(a => a.SurveyId == survey.Id)) { DataRow dr = null; dr = tbl.NewRow(); dr[LocalizedStrings.GetString("AuditDate")] = audit.EndDate.Value.ToShortDateString(); dr[LocalizedStrings.GetString("Schedule")] = audit.EndDate.Value.ToShortTimeString().Replace(":", "H"); dr[LocalizedStrings.GetString("Team")] = string.Join(",", audit.AuditorTeams); dr[LocalizedStrings.GetString("Auditor")] = audit.AuditorName; dr[LocalizedStrings.GetString("Auditee")] = audit.AuditeeName; dr[LocalizedStrings.GetString("AuditStatus")] = audits.Select(a => a.Auditor).FirstOrDefault(u => u.UserId == audit.AuditorId).Tenured.HasValue ? audits.Select(a => a.Auditor).FirstOrDefault(u => u.UserId == audit.AuditorId).Tenured.Value ? "Titulaire" : "Intérimaire" : ""; dr[LocalizedStrings.GetString("StandardAuditee")] = audit.ProcessName; int scoreTemp = 0; foreach (var surveyItem in survey.SurveyItems) { dr[surveyItem.Query] = audit.AuditItems.FirstOrDefault(item => item.Number == surveyItem.Number).IsOK.HasValue ? audit.AuditItems.FirstOrDefault(item => item.Number == surveyItem.Number).IsOK.Value ? 1 : 0 : -1; if (audit.AuditItems.FirstOrDefault(item => item.Number == surveyItem.Number).IsOK.Value == true) { scoreTemp++; } } dr["Score"] = scoreTemp; tbl.Rows.Add(dr); } worksheet.ImportDataTable(tbl, true, 2, 1); worksheet.Name = survey.Name; worksheet.UsedRange.WrapText = true; worksheet.Columns[0].AutofitColumns(); worksheet.SetColumnWidth(1, 10); IListObject table = worksheet.ListObjects.Create("tbl_" + survey.Name.Replace(" ", "_"), worksheet.UsedRange); table.BuiltInTableStyle = TableBuiltInStyles.TableStyleLight9; foreach (var surveyItem in survey.SurveyItems) { //Apply conditional formats for IsOK questionnaire items IConditionalFormats condition = worksheet.Columns[table.Columns.IndexOf(s => s.Name == surveyItem.Query)].ConditionalFormats; IConditionalFormat condition1 = condition.AddCondition(); condition1.FormatType = ExcelCFType.CellValue; condition1.Operator = ExcelComparisonOperator.Equal; condition1.FirstFormula = "1"; condition1.BackColor = ExcelKnownColors.Green; IConditionalFormat condition2 = condition.AddCondition(); condition2.FormatType = ExcelCFType.CellValue; condition2.Operator = ExcelComparisonOperator.Equal; condition2.FirstFormula = "0"; condition2.BackColor = ExcelKnownColors.Red; worksheet.Columns[table.Columns.IndexOf(s => s.Name == surveyItem.Query)].RowHeight = 80; worksheet.AutofitColumn(table.Columns.IndexOf(s => s.Name == surveyItem.Query)); } i++; } //worksheet.ImportData(group1, 2, 1, true); var path = Server.MapPath("~/App_Data/" + LocalizedStrings.GetString("Audits") + ".xlsx"); workbook.SaveAs(path, HttpContext.ApplicationInstance.Response, ExcelDownloadType.PromptDialog, ExcelHttpContentType.Excel2010); workbook.Close(); excelEngine.Dispose(); } } if (gridId == "AuditItems") { var audits = await _prepareService.GetAudits(id); var audit = AuditMapper.ToAuditViewModel(audits.FirstOrDefault()); var dataSource = audit.AuditItems.ToList(); auditItemViewModel = dataSource; var currentDate = DateTime.Today.ToShortDateString().Replace("/", "-"); obj.ServerExcelQueryCellInfo = QueryCellInfo; exp.Export(obj, dataSource, LocalizedStrings.GetString("Audit") + " " + process + " " + currentDate + ".xlsx", ExcelVersion.Excel2013, false, false, "flat-saffron"); } }