Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
 /// <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);
 }
Esempio n. 3
0
        /// <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;
        }