/// <summary> /// Adds organization address ///</summary> /// <param name="addresses">Address to add</param> /// <returns>Organization Addresses</returns> public EditAddressViewModel AddAddresses(EditAddressViewModel address) { var addressToAdd = new Address { Building = address.Addresses.First().House, Street = address.Addresses.First().Street, City = address.Addresses.First().City, Country = address.Addresses.First().Country }; var addedAddress = _unitOfWork.AddressRepository.Create(addressToAdd); var orgAddress = new OrgAddress { AddressId = addedAddress.Id, OrgId = address.OrgId }; _unitOfWork.OrganizationAddressRepository.Create(orgAddress); _unitOfWork.SaveChanges(); return(GetOrgAddress(address.OrgId)); }
/// <summary> /// Configures model creation /// </summary> /// <param name="modelBuilder">modelBuilder to configure Model Creation</param> protected override void OnModelCreating(ModelBuilder modelBuilder) { User.Configure(modelBuilder); Phone.Configure(modelBuilder); Address.Configure(modelBuilder); UserAddress.Configure(modelBuilder); Role.Configure(modelBuilder); Organization.Configure(modelBuilder); OrgAddress.Configure(modelBuilder); ExternalContact.Configure(modelBuilder); Membership.Configure(modelBuilder); Currency.Configure(modelBuilder); BankAccount.Configure(modelBuilder); OrgAccount.Configure(modelBuilder); Balance.Configure(modelBuilder); Target.Configure(modelBuilder); FinOp.Configure(modelBuilder); Tag.Configure(modelBuilder); TagFinOp.Configure(modelBuilder); Event.Configure(modelBuilder); EventImage.Configure(modelBuilder); Complaint.Configure(modelBuilder); GoodsType.Configure(modelBuilder); GoodsCategory.Configure(modelBuilder); OfferedItem.Configure(modelBuilder); RequestedItem.Configure(modelBuilder); BankImport.Configure(modelBuilder); BankImportDetail.Configure(modelBuilder); PasswordReset.Configure(modelBuilder); BannedUser.Configure(modelBuilder); BannedOrganization.Configure(modelBuilder); SubscribeOrganization.Configure(modelBuilder); Status.Configure(modelBuilder); OfferedItemImage.Configure(modelBuilder); RequestedItemImage.Configure(modelBuilder); UserResponse.Configure(modelBuilder); OrganizationResponse.Configure(modelBuilder); Donation.Configure(modelBuilder); Bank.Configure(modelBuilder); AutoImportIntervals.Configure(modelBuilder); }
/// <summary> /// Registers new organization /// </summary> /// <param name="item"> Item to register </param> /// <returns>Registered item</returns> public OrganizationRegistrationViewModel RegisterOrganization(OrganizationRegistrationViewModel item) { var checkOrganization = _unitOfWork.OrganizationRepository.Read().Where(o => o.Name == item.Name).FirstOrDefault(); if (checkOrganization == null) { var user = _unitOfWork.UsersRepository.GetUser(item.AdministratorLogin); if (user != null) { var role = _unitOfWork.RoleRepository.Read().Where(r => r.Name == "admin").FirstOrDefault(); var checkMembership = _unitOfWork.MembershipRepository.Read().Where(m => (m.UserId == user.Id) && (m.RoleId == role.Id)).FirstOrDefault(); if (checkMembership == null) { var organization = new Organization { Name = item.Name, Description = item.Description }; _unitOfWork.OrganizationRepository.Create(organization); _unitOfWork.SaveChanges(); var membership = new Membership { UserId = user.Id, OrgId = organization.Id, RoleId = role.Id }; _unitOfWork.MembershipRepository.Create(membership); _unitOfWork.SaveChanges(); var address = new Address { City = item.City, Street = item.Street, Country = item.Country, Building = item.House }; _unitOfWork.AddressRepository.Create(address); _unitOfWork.SaveChanges(); var orgAddres = new OrgAddress { OrgId = organization.Id, AddressId = address.Id }; _unitOfWork.OrganizationAddressRepository.Create(orgAddres); _unitOfWork.SaveChanges(); organization.OrgAddresses.Add(orgAddres); _unitOfWork.SaveChanges(); var result = new OrganizationRegistrationViewModel { Name = organization.Name, AdministratorLogin = item.AdministratorLogin, City = address.City, Country = address.Country, Street = address.Street, Description = organization.Description, House = address.Building }; return(result); } else { item.UserError = "Цей користувач вже адмініструє організацію"; return(item); } } item.UserError = "Користувача з таким логіном не зареєстровано"; return(item); } item.NameError = "Організація з такою назвою вже існує"; return(item); }
/// <summary> /// Registers new organization /// </summary> /// <param name="item"> Item to register </param> /// <returns>Registered item</returns> public OrganizationRegistrationViewModel RegisterOrganization(OrganizationRegistrationViewModel item) { var checkOrganization = _unitOfWork.OrganizationRepository.Read().Where(o => o.Name == item.Name).FirstOrDefault(); if (checkOrganization == null) { var user = _unitOfWork.UsersRepository.GetUser(item.AdministratorLogin); if (user != null) { var role = _unitOfWork.RoleRepository.Read().Where(r => r.Name == "admin").FirstOrDefault(); var checkMembership = _unitOfWork.MembershipRepository.Read().Where(m => (m.UserId == user.Id) && (m.RoleId == role.Id)).FirstOrDefault(); if (checkMembership == null) { var t = _imgManageService.UploadImageAsync(Convert.FromBase64String(item.LogoBase64Code), item.LogoImageExtension); Task.WhenAll(t); var organization = new Organization { Name = item.Name, Description = item.Description, LogoUrl = t.Result }; _unitOfWork.OrganizationRepository.Create(organization); var membership = new Membership { UserId = user.Id, OrgId = organization.Id, RoleId = role.Id }; _unitOfWork.MembershipRepository.Create(membership); var address = new Address { City = item.City, Street = item.Street, Country = item.Country, Building = item.House }; _unitOfWork.AddressRepository.Create(address); var orgAddres = new OrgAddress { OrgId = organization.Id, AddressId = address.Id }; _unitOfWork.OrganizationAddressRepository.Create(orgAddres); organization.OrgAddresses.Add(orgAddres); var interval = new AutoImportIntervals { OrgId = organization.Id, Interval = Constants.DefaultImportInterval, LastUpdateDate = DateTime.Now }; _unitOfWork.ImportIntervalRepository.Create(interval); _unitOfWork.SaveChanges(); var result = new OrganizationRegistrationViewModel { Name = organization.Name, AdministratorLogin = item.AdministratorLogin, City = address.City, Country = address.Country, Street = address.Street, Description = organization.Description, House = address.Building }; return(result); } else { item.UserError = "Цей користувач вже адмініструє організацію"; return(item); } } item.UserError = "Користувача з таким логіном не зареєстровано"; return(item); } item.NameError = "Організація з такою назвою вже існує"; return(item); }
public async Task UpdateAsync(Guid id, OrganizationDto model) { if (id != model.Id) { throw new BadRequestException("Org id mismatch"); } Organization org = _mapper.Map <Organization>(model); Organization dbOrg = await _context.Organizations .Where(o => o.Id == org.Id) .Include(o => o.OrgContacts).ThenInclude(oc => oc.Contact) .Include(o => o.OrgAddresses).ThenInclude(oa => oa.Address) .FirstOrDefaultAsync(); if (dbOrg == null) { //org.DateCreated = DateTime.UtcNow; //org.DateModified = null; //await _context.Organizations.AddAsync(org); throw new NotFoundException("Organization not found"); } // delete all contacts that are no longer exists foreach (OrgContact dbOrgContact in dbOrg.OrgContacts) { Contact dbContact = dbOrgContact.Contact; if (org.OrgContacts.All(oc => oc.Contact.Id != dbContact.Id)) { _context.Contacts.Remove(dbContact); } } // delete all addresses that are no longer exists foreach (OrgAddress dbOrgAddress in dbOrg.OrgAddresses) { Address dbAddress = dbOrgAddress.Address; if (org.OrgAddresses.All(oa => oa.Address.Id != dbAddress.Id)) { _context.Addresses.Remove(dbAddress); } } // copy current (incoming) values to db org.DateModified = DateTime.UtcNow; _context.Entry(dbOrg).CurrentValues.SetValues(org); #region Contacts var contactPairs = from curr in org.OrgContacts.Select(oc => oc.Contact) join db in dbOrg.OrgContacts.Select(oc => oc.Contact) on curr.Id equals db.Id into grp from db in grp.DefaultIfEmpty() select new { curr, db }; foreach (var pair in contactPairs) { if (pair.db != null) { _context.Entry(pair.db).CurrentValues.SetValues(pair.curr); _context.Contacts.Update(pair.db); } else { var orgContact = new OrgContact { OrgId = org.Id, Organization = org, ContactId = pair.curr.Id, Contact = pair.curr }; dbOrg.OrgContacts.Add(orgContact); } } #endregion #region Addresses var addressPairs = from curr in org.OrgAddresses.Select(oa => oa.Address) join db in dbOrg.OrgAddresses.Select(oa => oa.Address) on curr.Id equals db.Id into grp from db in grp.DefaultIfEmpty() select new { curr, db }; foreach (var pair in addressPairs) { if (pair.db != null) { _context.Entry(pair.db).CurrentValues.SetValues(pair.curr); _context.Addresses.Update(pair.db); } else { var orgAddress = new OrgAddress { OrgId = org.Id, Organization = org, AddressId = pair.curr.Id, Address = pair.curr }; dbOrg.OrgAddresses.Add(orgAddress); } } _context.Organizations.Update(dbOrg); #endregion await _context.SaveChangesAsync(); //model = _mapper.Map<OrganizationDto>(org); //return model; }