예제 #1
0
 private void IsReplyApproved(EnquiryReply enquiryReply)
 {
     if (enquiryReply.EnquiryReplyStatusId == (int)Enums.EnquiryReplyStatus.Approved)
     {
         throw new BusinessRuleException(MOF.Etimad.Monafasat.Resources.EnquiryResources.ErrorMessages.EnquiryReplyIsApproved);
     }
 }
예제 #2
0
        public async Task <EnquiryReply> GetEnquiryReplyByReplyId(int enquiryReplyId)
        {
            EnquiryReply enquiryReply = await _context.EnquiryReplies
                                        .Where(x => x.EnquiryReplyId == enquiryReplyId).FirstOrDefaultAsync();

            return(enquiryReply);
        }
예제 #3
0
        public async Task <EnquiryReply> AddEnquiryReply(EnquiryReplyModel enquiryReplyModel)
        {
            EnquiryReply enquiryReply = new EnquiryReply(enquiryReplyModel.EnquiryReplyMessage, enquiryReplyModel.EnquiryId, (int)Enums.EnquiryReplyStatus.Pending, enquiryReplyModel.CommitteeId, false);
            await _enquiryDomain.UserCanAddReplyToEnquiry(enquiryReplyModel.EnquiryId, _httpContextAccessor.HttpContext.User.UserId());

            return(await _enquiryCommands.CreateReplyAsync(enquiryReply));
        }
예제 #4
0
        public async Task <EnquiryReply> UpdateReplyAsync(EnquiryReply enquiryReply)
        {
            Check.ArgumentNotNull(nameof(enquiryReply), enquiryReply);
            _context.EnquiryReplies.Update(enquiryReply);
            await _context.SaveChangesAsync();

            return(enquiryReply);
        }
예제 #5
0
        public async Task <EnquiryReply> GetEnquiryReplyWithTender(int enquiryReplyId)
        {
            EnquiryReply enquiryReply = await _context.EnquiryReplies
                                        .Include(x => x.Enquiry)
                                        .ThenInclude(x => x.Tender)
                                        .Where(x => x.EnquiryReplyId == enquiryReplyId).FirstOrDefaultAsync();

            return(enquiryReply);
        }
예제 #6
0
        public void Should_ApproveEnquiryReply()
        {
            var enquiryReply = new EnquiryReply(EnquiryReplyMessage, EnquiryId, EnquiryReplyStatusId, CommitteeId, IsComment);

            enquiryReply.ApproveEnquiryReply();

            enquiryReply.ShouldNotBeNull();
            enquiryReply.EnquiryReplyStatusId.ShouldBe((int)Enums.EnquiryReplyStatus.Approved);
        }
예제 #7
0
        public async Task <EnquiryReply> GetEnquiryReplyWithCommunicationRequest(int enquiryReplyId)
        {
            EnquiryReply enquiryReply = await _context.EnquiryReplies
                                        .Include(x => x.Enquiry)
                                        .ThenInclude(x => x.AgencyCommunicationRequest)
                                        .Where(x => x.EnquiryReplyId == enquiryReplyId).FirstOrDefaultAsync();

            return(enquiryReply);
        }
예제 #8
0
        public async Task <EnquiryReply> CreateReplyAsync(EnquiryReply enquiryReply)

        {
            await _context.EnquiryReplies.AddAsync(enquiryReply);

            await _context.SaveChangesAsync();

            return(enquiryReply);
        }
예제 #9
0
        public void Should_Delete_EnquiryReply()
        {
            var enquiryReply = new EnquiryReply(EnquiryReplyMessage, EnquiryId, EnquiryReplyStatusId, CommitteeId, IsComment);

            enquiryReply.Delete();

            enquiryReply.ShouldNotBeNull();
            enquiryReply.State.ShouldBe(ObjectState.Deleted);
        }
예제 #10
0
        public async Task <EnquiryReply> EditEnquiryReply(EnquiryReplyModel enquiryReplyModel)
        {
            EnquiryReply enquiryReply = await _enquiryQueries.GetEnquiryReplyByReplyId(enquiryReplyModel.EnquiryReplyId);

            await _enquiryDomain.UserCanAddReplyToEnquiry(enquiryReply.EnquiryId, _httpContextAccessor.HttpContext.User.UserId());

            enquiryReply.Update(enquiryReplyModel.EnquiryReplyId, enquiryReplyModel.EnquiryReplyStatusId, enquiryReplyModel.EnquiryReplyMessage, enquiryReplyModel.CommitteeId, enquiryReplyModel.IsComment);
            return(await _enquiryCommands.UpdateReplyAsync(enquiryReply));
        }
예제 #11
0
        public void Should_DeActive_EnquiryReply()
        {
            var enquiryReply = new EnquiryReply(EnquiryReplyMessage, EnquiryId, EnquiryReplyStatusId, CommitteeId, IsComment);

            enquiryReply.DeActive();

            enquiryReply.ShouldNotBeNull();
            enquiryReply.IsActive.ShouldNotBeNull();
            enquiryReply.IsActive.Value.ShouldBeFalse();
        }
예제 #12
0
        public void Should_Construct_EnquiryReply()
        {
            var enquiryReply = new EnquiryReply(EnquiryReplyMessage, EnquiryId, EnquiryReplyStatusId, CommitteeId, IsComment);

            enquiryReply.ShouldNotBeNull();
            enquiryReply.EnquiryId.ShouldBe(EnquiryId);
            enquiryReply.CommitteeId.ShouldBe(CommitteeId);
            enquiryReply.EnquiryReplyMessage.ShouldBe(EnquiryReplyMessage);
            enquiryReply.EnquiryReplyStatusId.ShouldBe(EnquiryReplyStatusId);
            enquiryReply.EnquiryId.ShouldBe(EnquiryId);
        }
예제 #13
0
        public async Task <EnquiryReply> ApproveEnquiryReply(int enquiryReplyId)
        {
            EnquiryReply enquiryReply = await _enquiryQueries.GetEnquiryReplyWithTender(enquiryReplyId);

            IsReplyApproved(enquiryReply);
            enquiryReply.ApproveEnquiryReply();

            await SendNotificationAfterApproveReply(enquiryReply);

            return(await _enquiryCommands.UpdateReplyAsync(enquiryReply));
        }
예제 #14
0
        private async Task SendNotificationAfterApproveReply(EnquiryReply enquiryReply)
        {
            var           tender = enquiryReply.Enquiry.Tender;
            List <string> crs    = (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification) ? await _iDMAppService.QualificationToSendInvitation(tender.TenderId) : await _iDMAppService.GetAllSupplierOnTender(tender.TenderId);

            NotificationArguments NotificationArgument = new NotificationArguments();

            if (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification)
            {
                NotificationArgument.BodyEmailArgs = new object[] { "", tender.TenderName, tender.ReferenceNumber, tender?.LastEnqueriesDate, tender?.LastOfferPresentationDate };
            }
            else
            {
                NotificationArgument.BodyEmailArgs = new object[] { "", tender.TenderName, tender.ReferenceNumber, tender.Purpose, tender?.LastEnqueriesDate, tender?.LastOfferPresentationDate, tender.OffersOpeningDate, tender?.OffersOpeningDate?.Hour };
            }

            NotificationArgument.SubjectEmailArgs = new object[] { };
            NotificationArgument.PanelArgs        = new object[] { tender.ReferenceNumber };
            NotificationArgument.SMSArgs          = new object[] { tender.ReferenceNumber };

            MainNotificationTemplateModel mainNotificationTemplateModel = new MainNotificationTemplateModel(NotificationArgument, $"Enquiry/SupplierEnquiriesOnTender?id={Util.Encrypt(tender.TenderId)}", NotificationEntityType.Tender, tender.TenderId.ToString(), 0, tender.TechnicalOrganizationId);

            if (tender.TenderTypeId == (int)Enums.TenderType.PreQualification || tender.TenderTypeId == (int)Enums.TenderType.PostQualification)
            {
                await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.InquiriesAboutTender.publishfaqanswerforQualification, crs, mainNotificationTemplateModel);

                await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.TechnicalCommitteeSecretary.InquiriesAboutTender.PublishfaqanswerforQualification, tender.TechnicalOrganizationId, mainNotificationTemplateModel);
            }
            else
            {
                await _notificationAppService.SendNotificationForSuppliers(NotificationOperations.Supplier.InquiriesAboutTender.publishfaqanswer, crs, mainNotificationTemplateModel);

                await _notificationAppService.SendNotificationForCommitteeUsers(NotificationOperations.TechnicalCommitteeSecretary.InquiriesAboutTender.publishfaqanswerbackend, tender.TechnicalOrganizationId, mainNotificationTemplateModel);
            }

            enquiryReply.Enquiry.Tender.AddActionHistory(tender.TenderStatusId, TenderActions.ApproveFAQ, "", _httpContextAccessor.HttpContext.User.UserId());
            var comunicationRequest = await _enquiryQueries.GetEnquiryReplyWithCommunicationRequest(enquiryReply.EnquiryReplyId);

            AgencyCommunicationRequest agencyCommunicationRequest = await _enquiryDomain.GetEnquiryCommunicationRequestByRequestId(comunicationRequest.Enquiry.AgencyCommunicationRequest.AgencyRequestId);

            if (agencyCommunicationRequest.StatusId == (int)Enums.AgencyCommunicationRequestStatus.PendingEnquiryForReply && enquiryReply.EnquiryReplyStatusId == (int)Enums.EnquiryReplyStatus.Approved)
            {
                agencyCommunicationRequest.UpdateAgencyCommunicationRequestStatus((int)Enums.AgencyCommunicationRequestStatus.ReplyOnEnquiry);
                await _enquiryDomain.UpdateCommunicationRequest(agencyCommunicationRequest);
            }
        }
예제 #15
0
        public void Should_Update_EnquiryReply()
        {
            var enquiryReplyId       = 1;
            var enquiryReplyMessage  = "EnquiryReplyMessage updated";
            var enquiryReplyStatusId = 2;
            var committeeId          = 2;
            var isComment            = false;
            var enquiryReply         = new EnquiryReply(EnquiryReplyMessage, EnquiryId, EnquiryReplyStatusId, CommitteeId, IsComment);

            var updated = enquiryReply.Update(enquiryReplyId, enquiryReplyStatusId, enquiryReplyMessage, committeeId, isComment);

            updated.ShouldNotBeNull();
            updated.EnquiryReplyId.ShouldBe(enquiryReplyId);
            updated.IsComment.ShouldBe(isComment);
            updated.CommitteeId.ShouldBe(committeeId);
            updated.EnquiryReplyMessage.ShouldBe(enquiryReplyMessage);
            updated.EnquiryReplyStatusId.ShouldBe(enquiryReplyStatusId);
        }
예제 #16
0
        private string GetTechnicalCommitteeMember(EnquiryReply src, ResolutionContext context)
        {
            var TechnicalCommitteeMemberName = "";

            if (bool.Parse(context.Options.Items["statusFlag"].ToString()) == true)
            {
                return("");
            }

            if (!context.Options.Items.Keys.Contains("userIdFlag"))
            {
                return("");
            }

            var userId = int.Parse(context.Options.Items["userIdFlag"].ToString());

            if (src.Committee != null && src.Committee.CommitteeUsers.Any(c => c.UserProfileId == userId && c.UserRole.Name == RoleNames.TechnicalCommitteeUser))
            {
                TechnicalCommitteeMemberName = src.Committee.CommitteeUsers.Where(c => c.UserProfileId == userId && c.UserRole.Name == RoleNames.TechnicalCommitteeUser).FirstOrDefault().ToString();
            }

            return(TechnicalCommitteeMemberName);
        }
예제 #17
0
        public void Should_Empty_Construct_EnquiryReply()
        {
            EnquiryReply enquiryReply = new EnquiryReply();

            enquiryReply.ShouldNotBeNull();
        }
예제 #18
0
 public async Task AddEnquiryComment(EnquiryReplyModel enquiryReplyModel)
 {
     EnquiryReply enquiryReply = new EnquiryReply(enquiryReplyModel.EnquiryReplyMessage, enquiryReplyModel.EnquiryId, (int)Enums.EnquiryReplyStatus.Pending, enquiryReplyModel.CommitteeId, true);
     await _enquiryCommands.CreateReplyAsync(enquiryReply);
 }