示例#1
0
        public async Task CreateAsync(Guid id, Guid ownerId, string name,
                                      LocationDto location, string description, decimal fundsPerChild)
        {
            if (location == null)
            {
                throw new ServiceException("invalid_location", "Invalid location.");
            }

            Location foundLocation = null;

            if (!string.IsNullOrWhiteSpace(location.Address))
            {
                foundLocation = await _locationProvider.GetAsync(location.Address);
            }
            if (foundLocation == null && (Math.Abs(location.Latitude) > 0.01 && Math.Abs(location.Longitude) > 0.01))
            {
                foundLocation = await _locationProvider.GetAsync(location.Latitude, location.Longitude);
            }
            if (foundLocation == null)
            {
                throw new ServiceException("address_not_found",
                                           $"Address: '{location.Address} [lat: {location.Latitude}, " +
                                           $"lng: {location.Longitude}]' was not found.");
            }

            var ngo = new Ngo(id, ownerId, name, new Core.Domain.Shared.Location(foundLocation.Address,
                                                                                 foundLocation.Latitude, foundLocation.Longitude), description, fundsPerChild);
            await _ngoRepository.CreateAsync(ngo);
        }
        private static void IsValidNgo(Ngo user)
        {
            if (!(IsValidString(user.Username) &&
                  IsValidString(user.Name) &&
                  IsValidString(user.RegistrationNumber) &&
                  IsValidString(user.Password) &&
                  IsValidString(user.PhoneNumber) &&
                  IsValidString(user.Email) &&
                  IsValidString(user.Location.Description) &&
                  IsValidCoordinates(user.Location.Longitude, user.Location.Latitude)))
            {
                throw new BadRequestException("One of the required fields is empty");
            }

            else if (!IsValidEmail(user.Email))
            {
                throw new BadRequestException($"The Email {user.Email} is not a valid Email");
            }

            else if (!IsValidPassword(user.Password))
            {
                throw new BadRequestException("The Password is not valid, it should contain a number, a capital letter, and has a minimum of 8 characters");
            }

            else if (!IsLebanesePhoneNumber(user.PhoneNumber))
            {
                throw new BadRequestException("The phone number is incorrect, it should contain 8 digits");
            }
        }
示例#3
0
        private async Task CreateNgoAsync(Guid ownerId, string name, string address,
                                          double latitude, double longitude, IEnumerable <User> users)
        {
            var location = new Location(address, latitude, longitude);
            var ngo      = new Ngo(Guid.NewGuid(), ownerId, name, location,
                                   $"{name} description", fundsPerChild: 1500, approved: true);
            var children = CreateChildren(1500).ToList();

            foreach (var child in children)
            {
                ngo.AddChild(child);
            }

            foreach (var user in users)
            {
                var donation = user.DonateNgo(Guid.NewGuid(), ngo, 600, "hash");
                await Database.GetCollection <User>("Users").ReplaceOneAsync(x => x.Id == user.Id, user);

                ngo.DonateChildren(donation);
            }
            foreach (var child in children)
            {
                var childInfo = ngo.Children.Single(x => x.Id == child.Id);
                child.Donate(childInfo.GatheredFunds);
            }

            await Database.GetCollection <Ngo>("Ngos").InsertOneAsync(ngo);

            await Database.GetCollection <Child>("Children").InsertManyAsync(children);
        }
示例#4
0
        public void RegisterUser(string name, string email, string password, EAccountType role, ref IdentityResult result)
        {
            if (role == EAccountType.Volunteer)
            {
                Volunteer v = new Volunteer {
                    Name = name, Email = email, UserName = email
                };
                result = UserManager.Create(v, password);

                if (result.Succeeded)
                {
                    UserManager.AddToRole(v.Id, role.ToString());
                    SignInManager.SignIn(v, isPersistent: false, rememberBrowser: false);
                }
            }

            else if (role == EAccountType.Ngo)
            {
                Ngo n = new Ngo()
                {
                    Name = name, Email = email, UserName = email
                };
                result = UserManager.Create(n, password);

                if (result.Succeeded)
                {
                    UserManager.AddToRole(n.Id, role.ToString());
                    SignInManager.SignIn(n, isPersistent: false, rememberBrowser: false);
                }
            }
        }
示例#5
0
        public Donation DonateChild(Guid id, Ngo ngo, Guid childId, decimal value, string hash)
        {
            Donate(value);
            var donation = new Donation(id, this, ngo, childId, value, "child", hash);

            Donations.Add(donation);

            return(donation);
        }
示例#6
0
        public Donation DonateNgo(Guid id, Ngo ngo, decimal value, string hash)
        {
            Donate(value);
            var donation = new Donation(id, this, ngo, value, "ngo", hash);

            Donations.Add(donation);

            return(donation);
        }
        public async Task AddNgo(Ngo ngo)
        {
            using IDbConnection connection = _sqlConnectionFactory.CreateConnection();
            connection.Open();
            var sql       = new QueryBuilder().InsertInto("ngos", NgosTableColumns).Build();
            var ngoEntity = ToNgoEntity(ngo);
            await connection.ExecuteAsync(sql, ngoEntity);

            await _locationStore.AddLocation(ngo.Username, ngo.Location);
        }
示例#8
0
        public Ngo Login(Ngo ngo)
        {
            Ngo element = context.Ngos.FirstOrDefault(u => u.Username == ngo.Username && u.Password == ngo.Password);

            if (element == null)
            {
                return(null);
            }
            return(element);
        }
示例#9
0
 public Donation(Guid id, User user, Ngo ngo,
                 decimal value, string type, string hash) : base(id)
 {
     UserId    = user.Id;
     Username  = user.Username;
     NgoId     = ngo.Id;
     NgoName   = ngo.Name;
     Value     = value;
     Type      = type;
     Hash      = hash;
     CreatedAt = DateTime.UtcNow;
 }
示例#10
0
        public string Register(Ngo ngo)
        {
            int count   = context.Ngos.Count();
            Ngo element = context.Ngos.FirstOrDefault(a => a.Ngo_Name == ngo.Ngo_Name);

            if (element != null && count != 0)
            {
                return("exist");
            }
            context.Ngos.Add(ngo);
            context.SaveChanges();
            return("created");
        }
示例#11
0
        public ActionResult Create(FundraisingCampaign Fund)
        {
            FundraisingCampaign fund = new FundraisingCampaign();
            Ngo ngo = us.UserManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()) as Ngo;

            fund.Name         = Fund.Name;
            fund.Description  = Fund.Description;
            fund.StartDate    = Fund.StartDate;
            fund.EndDate      = Fund.EndDate;
            fund.TargetAmount = Fund.TargetAmount;
            fund.OwnerNgoId   = User.Identity.GetUserId();
            fcService.Add(fund);
            fcService.Commit();
            return(RedirectToAction("Index"));
        }
示例#12
0
        public Donation(Guid id, User user, Ngo ngo, Guid childId,
                        decimal value, string type, string hash) : base(id)
        {
            UserId   = user.Id;
            Username = user.Username;
            NgoId    = ngo.Id;
            NgoName  = ngo.Name;
            var child = ngo.Children.Single(x => x.Id == childId);

            ChildId       = childId;
            ChildFullName = child.FullName;
            Value         = value;
            Type          = type;
            Hash          = hash;
            CreatedAt     = DateTime.UtcNow;
        }
示例#13
0
        public async Task UpdateNgo(Ngo ngo)
        {
            using IDbConnection connection = _sqlConnectionFactory.CreateConnection();
            connection.Open();

            var sql = new QueryBuilder().Update("ngos", NgosTableColumns)
                      .Where($"Username = @Username").Build();

            var ngoEntity    = ToNgoEntity(ngo);
            int rowsAffected = await connection.ExecuteAsync(sql, ngoEntity);

            if (rowsAffected == 0)
            {
                throw new StorageErrorException($"Ngo entity with username {ngo.Username} was not found", 404);
            }
            await _locationStore.UpdateLocation(ngo.Username, ngo.Location);
        }
        // GET FundraisingCampaign by NGO
        public IEnumerable FundraisingCompaignByNgo()
        {
            UserService us = new UserService();
            List <FundraisingCampaign> Funds = new List <FundraisingCampaign>();

            //var iduser = System.Web.HttpContext.Current.User.Identity.GetUserId();

            Funds = ut.GetRepository <FundraisingCampaign>().GetAll().ToList();

            Ngo ngo = us.UserManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()) as Ngo;

            foreach (var fund in Funds)
            {
                if (fund.OwnerNgo == ngo)
                {
                    Funds.Remove(fund);
                }
            }

            return(Funds);
        }
 public async Task UpdateNgo(Ngo ngo)
 {
     IsValidNgo(ngo);
     await _userStore.UpdateNgo(ngo);
 }
示例#16
0
 public async Task CreateAsync(Ngo ngo)
 => await _repository.CreateAsync(ngo);
示例#17
0
 public IEnumerable <Request> GetRequestsbyID(Ngo ngo)
 {
     return(db.Requests.Where(x => x.Ngo_id == ngo.Id));
 }
示例#18
0
        private NgoEntity ToNgoEntity(Ngo ngo)
        {
            var entity = _mapper.Map <NgoEntity>(ngo);

            return(entity);
        }
示例#19
0
 public async Task UpdateAsync(Ngo ngo)
 => await _repository.UpdateAsync(ngo);
        public async Task <IActionResult> UpdateNgo([FromBody] Ngo ngo)
        {
            await _userService.UpdateNgo(ngo);

            return(Ok());
        }
        public async Task <IActionResult> SignUp([FromBody] Ngo ngo)
        {
            await _userService.AddNgo(ngo);

            return(Ok());
        }
 public async Task AddNgo(Ngo ngo)
 {
     IsValidNgo(ngo);
     await _userStore.AddNgo(ngo);
 }