public async Task AddEditLocalContentTemplate(LocalContentModel model, int branchId) { IsValidToAddEditLocalContentModel(model); Tender tender = await _tenderQueries.FindTenderWithConditionsTemplateById(Util.Decrypt(model.EncryptedTenderId), branchId); var templates = await _tenderQueries.FindTenderForLocalContentByTenderId(Util.Decrypt(model.EncryptedTenderId), branchId); if (tender == null) { throw new UnHandledAccessException(Resources.SharedResources.ErrorMessages.YouHaveNoAccess); } var versionId = await _tenderQueries.GetCurrentTenderActivityVersion(tender.TenderId); if (tender.TenderLocalContent == null) { tender.CreateTenderLocalContent(); } IsValidToAddEditLocalContent(tender, templates, model); var tenderAttachments = new List <TenderAttachment>(); foreach (var item in model.TenderAttachments) { tenderAttachments.Add(new TenderAttachment(item.Name, item.FileNetReferenceId, item.AttachmentTypeId, null, null)); } if (model.TenderAttachments.Any()) { tender.UpdateLocalContentAttachments(tenderAttachments, _httpContextAccessor.HttpContext.User.UserId()); } if (versionId >= (int)Enums.ActivityVersions.Sprint7Activities) { var hasInvitation = ((tender.PreQualificationId != null || tender.TenderTypeId == (int)Enums.TenderType.SecondStageTender || tender.TenderTypeId == (int)Enums.TenderType.NewDirectPurchase || tender.TenderTypeId == (int)Enums.TenderType.ReverseBidding || tender.TenderTypeId == (int)Enums.TenderType.LimitedTender || tender.TenderTypeId == (int)Enums.TenderType.FrameworkAgreement || tender.TenderTypeId == (int)Enums.TenderType.Competition || tender.TenderTypeId == (int)Enums.TenderType.NationalTransformationProjects) && tender.InvitationTypeId == (int)Enums.InvitationType.Specific) || (tender.TenderTypeId == (int)Enums.TenderType.CurrentDirectPurchase && tender.OfferPresentationWayId == (int)Enums.OfferPresentationWayId.TwoSepratedFiles); if (!hasInvitation) { tender.UpdateTenderStatus(Enums.TenderStatus.Established, "", _httpContextAccessor.HttpContext.User.UserId(), TenderActions.CreateTender); } else { tender.UpdateTenderStatus(Enums.TenderStatus.UnderEstablishing); } } UpdateTenderConditionTemplateStatusId(tender, Enums.TenderConditoinsStatus.LocalContent); tender.TenderLocalContent.UpdateTenderLocalContent(tender.TenderId, model.LocalContentMechanismIDs, model.IsApplyProvisionsMandatoryList, model.MinimumBaseline, model.MinimumPercentageLocalContentTarget); await _tenderCommands.UpdateAsync(tender); }
private void IsValidToAddEditLocalContentModel(LocalContentModel model) { if (model.LocalContentMechanismIDs == null || !model.LocalContentMechanismIDs.Any()) { throw new BusinessRuleException(Resources.TenderResources.ErrorMessages.LocalContentMechanismIMessage); } if (model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.LocalContentConditionsWeight) && model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.MinimumBaseline)) { throw new BusinessRuleException("لا يمكن الجمع بين ألية الحد الادنى وآلية وزن المحتوى المحلي"); } if (model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.LocalContentConditionsWeight) && (model.MinimumBaseline > 100 || model.MinimumBaseline < 0)) { throw new BusinessRuleException("الرجاء ادخال قيمة الحد الأدنى لخط الأساس اكبر من او يساوي صفر و اقل من او يساوي مائة"); } if (model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.MinimumBaseline) && (model.MinimumPercentageLocalContentTarget > 100 || model.MinimumPercentageLocalContentTarget < 0)) { throw new BusinessRuleException("الرجاء ادخال قيمة الحد الادنى لنسبة المحتوى المحلي المستهدفة اكبر من او يساوي صفر و اقل من او يساوي مائة"); } if (model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.MinimumBaseline) && string.IsNullOrEmpty(model.StudyMinimumTargetFileNetReferenceId)) { throw new BusinessRuleException("الرجاء ارفاق ملف دراسة الحد الأدنى للمحتوى المحلي المستهدف"); } }
private void IsValidToAddEditLocalContent(Tender tender, List <Template> templates, LocalContentModel model) { if ((!model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.LocalContentConditionsWeight) && !model.LocalContentMechanismIDs.Any(x => x == (int)Enums.LocalContentMechanism.MinimumBaseline)) && !tender.IsTenderContainsTawreedTables.Value && tender.EstimatedValue > 50000000 && !templates.Any(x => x.ActivitytemplatId == 22 || x.ActivitytemplatId == 13)) { throw new BusinessRuleException("الرجاء اختيار اختيار آلية وزن المحتوى المحلي او الحد الادني المطلوب للمحتوي المحلي"); } }