public static async Task<Response> CreateUserAsync(AddUserModel registerModel) { var response = new Response(); var context = new AdminDbContext(); ValidateUser(registerModel, response); if (!response.Success) { return response; } if (context.Users.Any(u => u.Email.Equals(registerModel.Email))) { response.AddMessage(false, "This email is already registered", ResponseMessageType.Warning); } else { var user = new User(); user.Email = registerModel.Email; user.Password = GenerateHashWithSalt(registerModel.Password, registerModel.Email); user.PasswordSalt = Path.GetRandomFileName(); user.RegisterDate = registerModel.RegisterDate; user.Active = registerModel.Active; context.Users.Add(user); await context.SaveChangesAsync(); } return response; }
public static HomePageModel GetHomePageModel() { var pageModel = new HomePageModel(); var context = new AdminDbContext(); pageModel.RelationTypes = RelationTypeManager.GetHomeRelationTypes(context); pageModel.EntityTypes = EntityTypeManager.GetHomeEntitiesTypes(context); return pageModel; }
public static IEnumerable<EntityTypeModel> GetEntityTypes(bool withEntities=false) { var context = new AdminDbContext(); var responseData = context.EntityTypes.AsEnumerable(); if(withEntities) { responseData = responseData.Where(et=>et.Entities.Any()); } return responseData.OrderBy(et=>et.Name).Select(u => new EntityTypeTableModel { Id = u.Id, Code = u.Code, Name = u.Name }); }
public static IEnumerable<SearchResultItemModel> Search(SearchModel search) { var page = (search.Page??1) - 1; var skip = page*20; var context = new AdminDbContext(); var totalResult = context.Entities.Where(e => e.Name.Contains(search.Query ?? string.Empty)); var totalResults = totalResult.Count(); var result = totalResult.OrderBy(e=>e.Name).Skip(skip).Take(20).Select(e => new SearchResultItemModel { Title = e.Name, EntityId = e.Id, Type = e.Type.Name, Image = e.Image??e.Type.DefaultImage }); return result; }
public static IEnumerable<RelationTypeModel> GetRelationTypes(bool withItems = false) { var context = new AdminDbContext(); var responseData = context.RelationTypes.AsEnumerable(); if (withItems) { responseData = responseData.Where(rt => rt.Relations.Any()); } return responseData.OrderBy(et => et.Name).Select(u => new RelationTypeDisplayModel { Id = u.Id, Code = u.Code, Name = u.Name }); }
public static async Task<Utils.Messages.Response> EditRelationAsync(RelationAddEditModel relationModel) { var response = new Response(); var context = new AdminDbContext(); ValidateRelation(relationModel, response); if (!response.Success) { return response; } var relation = context.Relations.Find(relationModel.Id); relation.TypeId = relationModel.TypeId; await context.SaveChangesAsync(); return response; }
public static Models.Pages.EntitiesBrowsePageModel GetEntitiesBrowsePageModel(long entityTypeId, int page) { var pageModel = new EntitiesBrowsePageModel(); var pageSize = 20; var skip = page * pageSize; var context = new AdminDbContext(); var entityType = context.EntityTypes.Find(entityTypeId); var totalResult = entityType.Entities.Count(); pageModel.Entities = entityType.Entities.OrderBy(e => e.Name).Skip(skip).Take(pageSize).Select(e => new EntityCardModel { Id = e.Id, Name = e.Name, Image = e.Image ?? e.Type.DefaultImage, Type = e.Type.Name, TypeId = e.TypeId }); pageModel.TotalPages = totalResult % 20 == 0 ? totalResult / 20 : (totalResult / 20) + 1; pageModel.CurrentPage = page + 1; pageModel.Type = entityType.Name; pageModel.CurrentEntityTypeId = entityTypeId; return pageModel; }
public static DTResponse GetRelationTypes(DTRequest request) { var context = new AdminDbContext(); var response = new DTResponse() { draw = request.draw }; var relationTypes = context.RelationTypes; var data = relationTypes.AsEnumerable(); if (request.order != null && request.order.Any()) { var asc = request.order[0].dir == "asc"; switch (request.order[0].column) { case 0: { data = asc ? data.OrderBy(u => u.Id) : data.OrderByDescending(u => u.Id); break; } case 1: { data = asc ? data.OrderBy(u => u.Code) : data.OrderByDescending(u => u.Code); break; } case 2: { data = asc ? data.OrderBy(u => u.Name) : data.OrderByDescending(u => u.Name); break; } default: { data = data.OrderBy(u => u.Id); break; } } } response.recordsFiltered = data.Count(); data = data.Skip(request.start).Take(request.length); var responseData = data.Select(u => new RelationTypeDisplayModel { Id = u.Id, Code = u.Code, Name = u.Name, Relations = u.Relations.Count() }); response.data = responseData; response.recordsTotal = context.RelationTypes.Count(); return response; }
public static Response Create(RegisterModel registerModel) { var response = new Response(); var context = new AdminDbContext(); if (context.Users.Any(u => u.Email.Equals(registerModel.Email))) { response.AddMessage(false, "This email is already registered", ResponseMessageType.Warning); } else { var user = new User(); user.Email = registerModel.Email; user.Password = GenerateHashWithSalt(registerModel.Password, registerModel.Email); user.PasswordSalt = Path.GetRandomFileName(); context.Users.Add(user); context.SaveChanges(); } return response; }
public static async Task<Utils.Messages.Response> AddRelationTypeAsync(RelationTypeAddEditModel relationTypeModel) { var response = new Response(); var context = new AdminDbContext(); if (context.RelationTypes.Any(u => u.Code.Equals(relationTypeModel.Code))) { response.AddMessage(false, "This code is already registered", ResponseMessageType.Warning); } else { var relationType = new RelationType(); relationType.Code = relationTypeModel.Code; relationType.Name = relationTypeModel.Name; context.RelationTypes.Add(relationType); await context.SaveChangesAsync(); } return response; }
public static async Task<Utils.Messages.Response> AddEntityAsync(EntityAddEditModel entityModel) { var response = new Response(); var context = new AdminDbContext(); ValidateEntity(entityModel, response); if (!response.Success) { return response; } else { var entity = new Entity(); entity.TypeId = entityModel.TypeId; entity.Name = entityModel.Name; context.Entities.Add(entity); await context.SaveChangesAsync(); } return response; }
public static EntityRelationsPageModel GetEntityRelationsPageModel(long entityId, long relationTypeId, int page) { var pageModel = new EntityRelationsPageModel(); var pageSize = 20; var skip = page * pageSize; var context = new AdminDbContext(); var entity = context.Entities.Find(entityId); var relationType = context.RelationTypes.Find(relationTypeId); var relations = context.Relations.Where(r => r.TypeId.Equals(relationTypeId) && r.RelationEntities.Any(re => re.EntityId.Equals(entityId))).OrderByDescending(r => r.Id).Skip(skip).Take(pageSize).ToList(); pageModel.CurrentRelationTypeId = relationTypeId; pageModel.Id = entity.Id; pageModel.Name = entity.Name; pageModel.RelationType = relationType.Name; pageModel.Type = entity.Type.Name; pageModel.Image = entity.Image ?? entity.Type.DefaultImage; var totalRelations = relations.Count(); pageModel.TotalPages = totalRelations % 20 == 0 ? totalRelations / 20 : (totalRelations / 20) + 1; pageModel.CurrentPage = page + 1; pageModel.Relations = relations.Select(r => new RelationCardModel { Id = r.Id, Attributes = r.Attributes.Take(3).Select(attr => new AttributeDisplayModel { Name = attr.Name, Value = attr.Value }), Entities = r.RelationEntities.Select(re => new RelationCardEntity { Id = re.EntityId, Name = re.Entity.Name, Type = re.MemberType != null ? re.Type.Name : "", EntityType = re.Entity.Type.Name }) }); return pageModel; }
public static IEnumerable<ApiProgressModel> UpdateETenderContracts(int onPage, int requests) { var tenderUrl = "http://etender.gov.md/json/contractList?rows=" + onPage; var index = 0; for (var request = 1; request <= requests; request++) { var context = new AdminDbContext(); var tenderType = context.EntityTypes.FirstOrDefault(et => et.Code == 3); var contractRelationType = context.RelationTypes.FirstOrDefault(et => et.Code == 1); var bankType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(9)); var accountOwnerRelationType = context.RelationTypes.First(rt => rt.Code.Equals(11)); var tenderCreatorType = context.RelationTypes.First(rt => rt.Code.Equals(5)); var personType = context.EntityTypes.First(rt => rt.Code.Equals(1)); var companyType = context.EntityTypes.First(rt => rt.Code.Equals(2)); var url = tenderUrl + "&page=" + request; yield return new ApiProgressModel { Message = "Start to collect data" }; var tenderResultObject = APIClient.GetApiObject<Models.ETender.Contracts.RootObject>(url); var totalRecords = tenderResultObject.rows.Count(); yield return new ApiProgressModel { Message = "Got " + totalRecords + " records" }; foreach (var row in tenderResultObject.rows) { var progress = new ApiProgressModel(); if (!context.Relations.Any(e => e.TypeId.Equals(contractRelationType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.id.ToString())))) { var contractRelation = new Relation(); contractRelation.TypeId = contractRelationType.Id; context.Relations.Add(contractRelation); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Amount", Value = row.amount.ToString() }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract type", Value = row.contractType.mdValue ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract date", Value = row.contractDate ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "State", Value = row.status.mdValue ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "State date", Value = row.currentStatusDate ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract number", Value = row.contractNumber ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender offer id", Value = row.fkOfferId.ToString() }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender decision id", Value = row.currentStatusDate ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Register date", Value = row.registerDate ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Final date", Value = row.finalDate ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Contract real number", Value = row.contractRealNumber ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "Note", Value = row.note ?? string.Empty }); contractRelation.Attributes.Add(new RelationAttribute() { Name = "ETender Id", Value = row.id.ToString() }); contractRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); var stateOrgTypeCode = row.tender.stateOrg != null ? row.tender.stateOrg.orgLegalForm!=null?row.tender.stateOrg.orgLegalForm.id:590 : 590; var stateOrgType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(stateOrgTypeCode)); if (stateOrgType == null) { stateOrgType = new EntityType() { Code = row.tender.stateOrg.orgLegalForm.id, Name = row.tender.stateOrg.orgLegalForm.mdValue }; context.EntityTypes.Add(stateOrgType); yield return new ApiProgressModel { Message = "New entity type added " + stateOrgType.Name }; } var stateOrgEntity = context.Entities.FirstOrDefault(e => e.Type.Code.Equals(stateOrgType.Code) && e.Attributes.Any(attr => attr.Name.Equals("Code") && attr.Value.Equals(row.tender.stateOrg.code))); if (stateOrgEntity == null) { stateOrgEntity = new Entity(); stateOrgEntity.Name = row.tender.stateOrg.orgName; stateOrgEntity.Type = stateOrgType; stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Code", Value = row.tender.stateOrg.code ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.tender.stateOrg.id.ToString() }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Address", Value = row.tender.stateOrg.address ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Treasuty account", Value = row.tender.stateOrg.treasutyAcc ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Fiscal code", Value = row.tender.stateOrg.fiscalCode != null ? row.tender.stateOrg.fiscalCode.ToString() : string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Bank account", Value =row.tender.stateOrg.bankAccount!=null?row.tender.stateOrg.bankAccount.ToString() : string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Phone", Value = row.tender.stateOrg.phone ?? string.Empty }); stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Fax", Value = row.tender.stateOrg.fax ?? string.Empty }); if (row.addAccordReason != null) { stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason", Value = row.addAccordReason.ToString() }); } if (row.addAccordReasonDocuments != null) { stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason", Value = row.addAccordReasonDocuments.ToString() }); } if (row.addAccordShortDescr != null) { stateOrgEntity.Attributes.Add(new EntityAttribute() { Name = "Accord reason short description", Value = row.addAccordShortDescr.ToString() }); } stateOrgEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); context.Entities.Add(stateOrgEntity); yield return new ApiProgressModel { Message = "Creating " + stateOrgType.Name + " " + stateOrgEntity.Name }; } if (row.tender.stateOrg.bank != null) { var bank = context.Entities.FirstOrDefault(e => e.TypeId.Equals(bankType.Id) && e.Attributes.Any(attr => attr.Name.Equals("BIC") && attr.Value.Equals(row.tender.stateOrg.bank.sapiCode))); if (bank == null) { bank = new Entity(); bank.Name = row.tender.stateOrg.bank.mdShort; bank.Type = bankType; bank.Attributes.Add(new EntityAttribute() { Name = "Short Name", Value = row.tender.stateOrg.bank.mdShort ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "mfo Code", Value = row.tender.stateOrg.bank.mfoCode ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "Fiscal Code", Value = row.tender.stateOrg.bank.fiscalCode ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "BIC", Value = row.tender.stateOrg.bank.sapiCode ?? string.Empty }); bank.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); context.Entities.Add(bank); yield return new ApiProgressModel { Message = "Creating entity Bank " + bank.Name }; } if (!context.Relations.Any(r => r.TypeId.Equals(accountOwnerRelationType.Id) && r.RelationEntities.Any(re => re.EntityId.Equals(stateOrgEntity.Id) && r.RelationEntities.Any(re1 => re1.EntityId.Equals(bank.Id))))) { var bankRelation = new Relation(); bankRelation.TypeId = accountOwnerRelationType.Id; bankRelation.Type = accountOwnerRelationType; bankRelation.RelationEntities.Add(new RelationEntity { Entity = bank, MemberType= 4}); bankRelation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity, MemberType = 3 }); bankRelation.Attributes.Add(new RelationAttribute { Name = "Account", Value = row.tender.stateOrg.account ?? string.Empty }); bankRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); context.Relations.Add(bankRelation); } } var tenderEntity = context.Entities.FirstOrDefault(e => e.TypeId.Equals(tenderType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.tender.id.ToString()))); if (tenderEntity == null) { tenderEntity = new Entity(); tenderEntity.TypeId = tenderType.Id; tenderEntity.Name = row.tender.tenderData.goodsDescr; context.Entities.Add(tenderEntity); yield return new ApiProgressModel { Message = "Creating new Tender entity " + tenderEntity.Name }; tenderEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.id.ToString() }); tenderEntity.Attributes.Add(new EntityAttribute() { Name = "Registration number ", Value = row.tender.regNumber ?? string.Empty }); tenderEntity.Attributes.Add(new EntityAttribute() { Name = "Goods", Value = row.tender.tenderData.goodsDescr ?? string.Empty }); tenderEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); context.Entities.Add(tenderEntity); var relation = new Relation(); relation.Type = tenderCreatorType; relation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity }); relation.RelationEntities.Add(new RelationEntity { Entity = tenderEntity }); context.Relations.Add(relation); } var seller = context.Entities.FirstOrDefault(e => e.TypeId.Equals(companyType.Id) && e.Name.Equals( row.participant.fullName)); if (seller == null) { seller = context.Entities.FirstOrDefault(e => e.TypeId.Equals(personType.Id) && e.Name.Equals(row.participant.fullName)); } if (seller == null) { seller = new Entity(); seller.Name = row.participant.fullName; seller.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.participant.id.ToString() }); if (row.participant.juristicPerson == 1) { seller.Attributes.Add(new EntityAttribute() { Name = "Juridical name", Value = row.participant.jurName ?? string.Empty }); seller.Type = companyType; } else { seller.Type = personType; seller.Attributes.Add(new EntityAttribute() { Name = "First name", Value = row.participant.name ?? string.Empty }); seller.Attributes.Add(new EntityAttribute() { Name = "Last name", Value = row.participant.lastName ?? string.Empty }); seller.Attributes.Add(new EntityAttribute() { Name = "Patronymic", Value = row.participant.patronymic ?? string.Empty }); } seller.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/contracte" }); context.Entities.Add(seller); } contractRelation.RelationEntities.Add(new RelationEntity { Entity = tenderEntity }); contractRelation.RelationEntities.Add(new RelationEntity { Entity = stateOrgEntity, MemberType = 1 }); contractRelation.RelationEntities.Add(new RelationEntity { Entity = seller, MemberType = 2 }); context.Relations.Add(contractRelation); context.SaveChanges(); index++; yield return new ApiProgressModel { Message = index+ " Saved!!!" }; } else { yield return new ApiProgressModel { Message = "Contract with ETender Id = " + row.id + " exists" }; } } } yield return new ApiProgressModel { Message = "Processing data finished !!!!" }; }
public static RelationBrowsePageModel GetRelationBrowsePageModel(long entityTypeId, int page) { var pageModel = new RelationBrowsePageModel(); var pageSize = 20; var skip = page * pageSize; var context = new AdminDbContext(); var relationType = context.RelationTypes.Find(entityTypeId); var totalResult = relationType.Relations.Count(); pageModel.Type = relationType.Name; pageModel.Relations = relationType.Relations.OrderByDescending(rt => rt.Id).Skip(skip).Take(pageSize) .Select(r => new RelationCardModel { Id = r.Id, Attributes = r.Attributes.Take(3).Select(attr => new AttributeDisplayModel { Name = attr.Name, Value = attr.Value }), Entities = r.RelationEntities.Select(re => new RelationCardEntity { Id = re.EntityId, Name = re.Entity.Name, Type = re.MemberType != null ? re.Type.Name : "", EntityType = re.Entity.Type.Name }) }); pageModel.TotalPages = totalResult % 20 == 0 ? totalResult / 20 : (totalResult / 20) + 1; pageModel.CurrentPage = page + 1; pageModel.CurrentEntityTypeId = entityTypeId; return pageModel; }
public static EntityTableModel GetEntityTableModel(long id) { var context = new AdminDbContext(); var entity = context.Entities.Find(id); if (entity != null) { return new EntityTableModel() { Id = entity.Id, Type = entity.Type.Name, Name = entity.Name }; } return null; }
public static bool CheckEntityByAttributeNameAndValue(int entityType, string name, string value, AdminDbContext context = null) { context = context ?? new AdminDbContext(); return context.Entities.Any(e => e.Type.Code.Equals(entityType) && e.Attributes.Any(attr => attr.Name.Equals(name) && attr.Value.Equals(value))); }
public static async Task<Utils.Messages.Response> DeleteRelationAsync(long id) { var response = new Response(); var context = new AdminDbContext(); var relation = context.Relations.Find(id); if (relation != null) { context.Relations.Remove(relation); await context.SaveChangesAsync(); } return response; }
public static RelationDisplayModel GetRelationDisplayModel(long id) { var context = new AdminDbContext(); var relation = context.Relations.Find(id); if (relation != null) { return new RelationDisplayModel() { Id = relation.Id, Type = relation.Type.Name }; } return null; }
public static AddEntityRelationModel GetEntityRelationModel(long id) { var context = new AdminDbContext(); var entity = context.Entities.Find(id); var entityRelation = new AddEntityRelationModel { Id = entity.Id, Name = entity.Name }; return entityRelation; }
public static async Task<Response> AddEntityRelation(AddEntityRelationModel addEntityRelationModel) { var response = ValidateEntityRelation(addEntityRelationModel); if (!response.Success) { return response; } var relation = new Relation() { TypeId = addEntityRelationModel.RelationTypeId }; relation.RelationEntities.Add(new RelationEntity { EntityId = addEntityRelationModel.Id }); relation.RelationEntities.Add(new RelationEntity { EntityId = addEntityRelationModel.OtherEntityId }); var context = new AdminDbContext(); context.Relations.Add(relation); await context.SaveChangesAsync(); return response; }
public static async Task<Utils.Messages.Response> DeleteEntiTypeAsync(long id) { var response = new Response(); var context = new AdminDbContext(); var entityType = context.EntityTypes.Find(id); if(entityType!=null) { context.EntityTypes.Remove(entityType); await context.SaveChangesAsync(); } return response; }
public static IEnumerable<object> GetEntities(string query) { var context = new AdminDbContext(); var response = context.Entities.Where(e => e.Name.Contains(query ?? "")).OrderBy(e => e.Name).Take(25).Select(o => new { id = o.Id, text = o.Name }); return response; }
public static IEnumerable<DateAmount> GetDateAmount(int entityId, int entityCode, int relationEntityCode) { var context = new AdminDbContext(); var entity = context.Entities.Find(entityId); //var relations = entity.RelationEntities.Where(re => re.MemberType == entityCode) //.Select(re => re.Relation) //.Where(r => r.Attributes.Any(attr => attr.Name.Equals("Amount"))&&r.Attributes.Any(attr1=>attr1.Name.Equals("Contract date"))).Distinct(); var relations = context.Relations.Where(r => r.RelationEntities.Any(re => re.EntityId.Equals(entityId) && re.MemberType == entityCode) && r.RelationEntities.Any(re1 => re1.MemberType == relationEntityCode) && r.Attributes.Any(attr => attr.Name.Equals("Amount")) && r.Attributes.Any(attr1 => attr1.Name.Equals("Contract date"))); var result = new List<DateAmount>(); foreach (var relation in relations) { var amount = Convert.ToDecimal(relation.Attributes.First(attr => attr.Name.Equals("Amount")).Value); var entityName = relation.Attributes.First(attr => attr.Name.Equals("Contract date")).Value; if (result.Any(r => r.Date.Equals(entityName))) { result.First(r => r.Date.Equals(entityName)).Amount += amount; } else { var entityAmount = new DateAmount() { Amount = amount, Date = entityName }; result.Add(entityAmount); } } return result; }
public static IEnumerable<ApiProgressModel> UpdateETenders(int onPage, int requests) { var tenderUrl = "http://etender.gov.md/json/tenderList?rows=" + onPage; var index = 0; for (var request = 1; request <= requests; request++) { var context = new AdminDbContext(); var tenderType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(3)); var bankType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(9)); var accountOwnerRelationType = context.RelationTypes.First(rt => rt.Code.Equals(11)); var tenderCreatorType = context.RelationTypes.First(rt => rt.Code.Equals(5)); var url = tenderUrl + "&page=" + request; yield return new ApiProgressModel { Message = "Start to collect data" }; var tenderResultObject = APIClient.GetApiObject<Models.ETender.RootObject>(url); var totalRecords = tenderResultObject.rows.Count(); yield return new ApiProgressModel { Message = "Got " + totalRecords + " records" }; foreach (var row in tenderResultObject.rows) { index++; var progress = new ApiProgressModel(); if (!context.Entities.Any(e => e.TypeId.Equals(tenderType.Id) && e.Attributes.Any(attr => attr.Name.Equals("ETender Id") && attr.Value.Equals(row.id.ToString())))) { var entity = new Entity(); entity.TypeId = tenderType.Id; entity.Name = row.tenderData.goodsDescr; context.Entities.Add(entity); yield return new ApiProgressModel { Message = "Creating new Tender entity " + entity.Name }; entity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.id.ToString() }); entity.Attributes.Add(new EntityAttribute() { Name = "Tender type", Value = row.tenderType.mdValue ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Tender status at " + row.refCurrentStatusDate, Value = row.tenderStatus.mdValue }); entity.Attributes.Add(new EntityAttribute() { Name = "Tender open date", Value = row.refTendeOpenDate ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Registration number ", Value = row.regNumber ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Goods", Value = row.tenderData.goods.mdValue ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Tender status", Value = row.tenderData.status.mdValue ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Language", Value = row.tenderData.language.mdValue ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Place offers at", Value = row.tenderData.pressOffersPlace ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Place offers until", Value = row.tenderData.pressOffersDate ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Open date time", Value = row.tenderData.deliveryTerms.mdValue ?? string.Empty }); entity.Attributes.Add(new EntityAttribute() { Name = "Notes", Value = row.notes ?? string.Empty }); entity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id }); var entityCode = row.stateOrg.orgLegalForm != null ? row.stateOrg.orgLegalForm.id : 590; var entityType = context.EntityTypes.FirstOrDefault(et => et.Code.Equals(entityCode)); if (entityType == null) { entityType = new EntityType() { Code = row.stateOrg.orgLegalForm.id, Name = row.stateOrg.orgLegalForm.mdValue }; context.EntityTypes.Add(entityType); yield return new ApiProgressModel { Message = "New entity type added " + entityType.Name}; } var stateEntity = context.Entities.FirstOrDefault(e => e.Type.Code.Equals(entityType.Code) && e.Attributes.Any(attr => attr.Name.Equals("Code") && attr.Value.Equals(row.stateOrg.code))); if (stateEntity == null) { stateEntity = new Entity(); stateEntity.Name = row.stateOrg.orgName; stateEntity.Type = entityType; stateEntity.Attributes.Add(new EntityAttribute() { Name = "Code", Value = row.stateOrg.code ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "ETender Id", Value = row.stateOrg.id.ToString() }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Address", Value = row.stateOrg.address ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.stateOrg.account ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Treasuty account", Value = row.stateOrg.treasutyAcc ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Fiscal code", Value = row.stateOrg.fiscalCode != null ? row.stateOrg.fiscalCode.ToString() : string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Account", Value = row.stateOrg.account ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Bank account", Value = row.stateOrg.bankAccount!=null?row.stateOrg.bankAccount.ToString():string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Phone", Value = row.stateOrg.phone ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Fax", Value = row.stateOrg.fax ?? string.Empty }); stateEntity.Attributes.Add(new EntityAttribute() { Name = "Email", Value = row.stateOrg.email ?? string.Empty }); stateEntity.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id }); context.Entities.Add(stateEntity); yield return new ApiProgressModel { Message = "Creating " + entityType.Name + " " + stateEntity.Name }; } if (row.stateOrg.bank != null) { var bank = context.Entities.FirstOrDefault(e => e.TypeId.Equals(bankType.Id) && e.Attributes.Any(attr => attr.Name.Equals("BIC") && attr.Value.Equals(row.stateOrg.bank.sapiCode))); if (bank == null) { bank = new Entity(); bank.Name = row.stateOrg.bank.mdShort; bank.Type = bankType; bank.Attributes.Add(new EntityAttribute() { Name = "Short Name", Value = row.stateOrg.bank.mdShort ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "mfo Code", Value = row.stateOrg.bank.mfoCode ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "Fiscal Code", Value = row.stateOrg.bank.fiscalCode ?? string.Empty }); bank.Attributes.Add(new EntityAttribute() { Name = "BIC", Value = row.stateOrg.bank.sapiCode ?? string.Empty }); bank.References.Add(new EntityReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id }); context.Entities.Add(bank); yield return new ApiProgressModel { Message = "Creating entity Bank" + bank.Name }; } if (!context.Relations.Any(r => r.TypeId.Equals(accountOwnerRelationType.Id) && r.RelationEntities.Any(re => re.EntityId.Equals(stateEntity.Id) && r.RelationEntities.Any(re1 => re1.EntityId.Equals(bank.Id))))) { var bankRelation = new Relation(); bankRelation.TypeId = accountOwnerRelationType.Id; bankRelation.Type = accountOwnerRelationType; bankRelation.RelationEntities.Add(new RelationEntity { Entity = bank }); bankRelation.RelationEntities.Add(new RelationEntity { Entity = stateEntity }); bankRelation.Attributes.Add(new RelationAttribute { Name = "Account", Value = row.stateOrg.account ?? string.Empty }); bankRelation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" + row.id }); context.Relations.Add(bankRelation); } } var relation = new Relation(); relation.Type = tenderCreatorType; relation.RelationEntities.Add(new RelationEntity { Entity = stateEntity }); relation.RelationEntities.Add(new RelationEntity { Entity = entity }); relation.References.Add(new RelationReference() { Title = "Registrul de stat al achizițiilor publice", Link = "http://etender.gov.md/proceduricard?pid=" +row.id}); context.Relations.Add(relation); context.SaveChanges(); yield return new ApiProgressModel { Message = index +" Saved!" }; } else { yield return new ApiProgressModel { Message="Tender with ETender Id = " + row.id }; } } } yield return new ApiProgressModel { Message = "Processing data finished !!!!" }; }
public static RelationAddEditModel GetRelationEditModel(long id) { var context = new AdminDbContext(); var relation = context.Relations.Find(id); if (relation != null) { return new RelationAddEditModel() { Id = relation.Id, TypeId = relation.TypeId }; } return null; }
public static async Task<Utils.Messages.Response> EditEntiTypeAsync(EntityTypeAddEditModel entityTypeModel) { var response = new Response(); var context = new AdminDbContext(); if (context.EntityTypes.Any(u => u.Code.Equals(entityTypeModel.Code)&&!u.Id.Equals(entityTypeModel.Id))) { response.AddMessage(false, "This code is already registered on another entity", ResponseMessageType.Warning); } else { var entityType = context.EntityTypes.Find(entityTypeModel.Id); entityType.Code = entityTypeModel.Code; entityType.Name = entityTypeModel.Name; await context.SaveChangesAsync(); } return response; }
public static RelationTypeAddEditModel GetRelationTypeEditModel(long id) { var context = new AdminDbContext(); var relationType = context.RelationTypes.Find(id); if (relationType != null) { return new RelationTypeAddEditModel() { Id = relationType.Id, Code = relationType.Code, Name = relationType.Name }; } return null; }
internal static IEnumerable<HomePageRelationTypeDisplayModel> GetHomeRelationTypes(AdminDbContext context=null) { context = context ?? new AdminDbContext(); return context.RelationTypes.OrderBy(rt => rt.Name).Where(rt=>rt.Relations.Any()).Select(rt => new HomePageRelationTypeDisplayModel() { Id = rt.Id, Name = rt.Name, Count = rt.Relations.Count() }); }
public static EntityTypeAddEditModel GetEntityTypeEditModel(long id) { var context = new AdminDbContext(); var entityType = context.EntityTypes.Find(id); if (entityType != null) { return new EntityTypeAddEditModel() { Id = entityType.Id, Code = entityType.Code, Name = entityType.Name }; } return null; }
public static EntityDisplayModel GetEntity(long id) { var context = new AdminDbContext(); var entity = context.Entities.Find(id); var model = new EntityDisplayModel(); model.Id = entity.Id; model.Image = entity.Image ?? entity.Type.DefaultImage; model.Name = entity.Name; model.Type = entity.Type.Name; model.Description = entity.Description; model.Attributes = entity.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value }); model.RelationTypes = entity.RelationEntities.Select(re => re.Relation.Type).Distinct().Select(rt => new SiteRelationTypeDisplayModel { Id = rt.Id, Name = rt.Name }).ToList(); // var relations = entity.RelationEntities.Select(re => re.Relation).Select(r => new SiteRelationDisplayModel() {TypeId=r.TypeId, Type= r.Type.Name, Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e=> new EntityTableModel(){Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image??e.Type.DefaultImage})}); var relations = entity.RelationEntities.Select(re => re.Relation);//.Select(r => new SiteRelationDisplayModel() { TypeId = r.TypeId, Type = r.Type.Name, Attributes = r.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value }), Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e => new EntityTableModel() { Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image ?? e.Type.DefaultImage }) }); for (var i=0; i< model.RelationTypes.Count(); i++) { var relationType = model.RelationTypes.ElementAt(i); relationType.TotalRelations = relations.Where(r => r.TypeId.Equals(relationType.Id)).Count(); relationType.Relations.AddRange(relations.Where(r => r.TypeId.Equals(relationType.Id)).OrderByDescending(r => r.Id).Take(5).Select(r => new SiteRelationDisplayModel() { TypeId = r.TypeId, Type = r.Type.Name, Attributes = r.Attributes.Select(a => new AttributeDisplayModel { Name = a.Name, Value = a.Value }), Entities = r.RelationEntities.Where(re => re.EntityId != entity.Id).Select(re => re.Entity).Select(e => new EntityTableModel() { Id = e.Id, Name = e.Name, Type = e.Type.Name, Image = e.Image ?? e.Type.DefaultImage }) })); } model.References = entity.References.Select(r => new ReferenceDisplayModel { Description = r.Description, Document = r.Document, Link = r.Link, Title = r.Title }); return model; }