Exemple #1
0
        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));
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        // 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);
        }
Exemple #8
0
        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);
            }
        }
Exemple #10
0
        /// <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);
        }
Exemple #13
0
        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");
            }
        }