public void Donate(DonationDto donationDto, int UserId)
        {
            Donation donation = new Donation();

            donation.UserId = UserId;


            int             donationProgramId = donationDto.donationProgram.DonationProgramId;
            DonationProgram donationProgram   = _context.DonationPrograms.FirstOrDefault(n => n.DonationProgramId == donationProgramId);

            int NewTotal = donationProgram.Total + donationDto.amount;

            donationProgram.Total = NewTotal;
            _context.SaveChanges();

            //var donations = _context.DonationProgramAudits.ToList();

            var donationProgramAudit =
                _context.DonationProgramAudits.Where(n =>
                                                     n.DonationProgramId == donationProgramId).ToList().Last();

            donation.DonationProgram_AuditId = donationProgramAudit.DonationProgram_AuditId;
            donation.Amount = donationDto.amount;

            _context.Donations.Add(donation);
        }
        public void UpdateDonationProgram_ShouldUpdateDonationProgramREPO()
        {
            var mockDonationProgramsDto = new DonationProgramDto()
            {
                DonationProgramId   = 1,
                DonationProgramName = "EndPolio",
                Description         = "End Polio Now!",
                ImageRef            = "Ref",
                StartDate           = DateTime.Now,
                EndDate             = DateTime.Now,
                Total = 100
            };

            var mockExpected = new DonationProgram()
            {
                DonationProgramId   = mockDonationProgramsDto.DonationProgramId,
                DonationProgramName = mockDonationProgramsDto.DonationProgramName,
                Description         = mockDonationProgramsDto.Description,
                ImageRef            = mockDonationProgramsDto.ImageRef,
                StartDate           = mockDonationProgramsDto.StartDate,
                EndDate             = mockDonationProgramsDto.EndDate,
                Total = mockDonationProgramsDto.Total
            };

            var mockExpectedUpdated = new DonationProgramDto()
            {
                DonationProgramId   = 1,
                DonationProgramName = "EndPolioNow",
                Description         = "End Polio Now!",
                ImageRef            = "Ref",
                StartDate           = DateTime.Now,
                EndDate             = DateTime.Now,
                Total = 1000
            };

            var mockRepo = new Mock <IRotaractRepository>();

            mockRepo.Setup(d => d.UpdateDonation(mockExpected));

            //Arrange
            DonationController donationController = new DonationController(mockRepo.Object)
            {
                Request       = new System.Net.Http.HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            //Act
            var result = donationController.UpdateDonation(mockExpectedUpdated);

            //Assert
            Assert.AreEqual(HttpStatusCode.Accepted, result.StatusCode);
        }
        public void UpdateDonation(DonationProgram donationProgram)
        {
            DonationProgram result = _context.DonationPrograms.SingleOrDefault(p => p.DonationProgramId == donationProgram.DonationProgramId);

            if (result != null)
            {
                result.Description         = donationProgram.Description;
                result.ImageRef            = donationProgram.ImageRef;
                result.DonationProgramName = donationProgram.DonationProgramName;
                result.StartDate           = donationProgram.StartDate;
                result.EndDate             = donationProgram.EndDate;
            }
        }
        public HttpResponseMessage AddDonationProgram([System.Web.Http.FromBody] DonationProgramDto donationProgramDto)
        {
            try
            {
                DonationProgram donationProgram = new DonationProgram();

                _rotaractRepository.AddDonationProgram(donationProgram);
                _rotaractRepository.Save();
                return(Request.CreateResponse(HttpStatusCode.Created, "Donation Added to the system"));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e));
            }
        }
        public HttpResponseMessage UpdateDonation([System.Web.Http.FromBody] DonationProgramDto donationProgramDto)
        {
            try
            {
                DonationProgram donationProgram = new DonationProgram();
                //AutoMapper.Mapper.Map(donationProgramDto, donationProgram);

                _rotaractRepository.UpdateDonation(donationProgram);
                _rotaractRepository.Save();
                return(Request.CreateResponse(HttpStatusCode.Accepted, "Donation program updated in the system"));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e));
            }
        }
        public void MakeDonation_ShouldAllowAnUserToDonateREPO()
        {
            //declare and init
            var mockDonationProgram = new DonationProgram
            {
                DonationProgramId   = 1,
                DonationProgramName = "One",
                Description         = "Maxim one",
                ImageRef            = "An image ref",
                StartDate           = DateTime.Now,
                EndDate             = DateTime.Now,
                Total = 111
            };
            const int AmountToDonate = 20;
            const int UserID         = 1234;

            var mockExpected = new DonationDto()
            {
                donationProgram = mockDonationProgram,
                amount          = AmountToDonate
            };

            var mockRepo = new Mock <IRotaractRepository>();

            mockRepo.Setup(d => d.Donate(mockExpected, UserID));

            //Arrange
            DonationController donationController = new DonationController(mockRepo.Object)
            {
                Request       = new System.Net.Http.HttpRequestMessage(),
                Configuration = new HttpConfiguration()
            };

            //Act
            var result = donationController.MakeDonation(mockExpected, UserID);

            //Assert
            Assert.AreEqual(HttpStatusCode.Accepted, result.StatusCode);
        }
        public void AddDonationProgram_ShouldAddNewDonationProgramER()
        {
            var mockDonationProgramList = new List <DonationProgram>()
            {
                new DonationProgram
                {
                    DonationProgramId   = 1,
                    DonationProgramName = "One",
                    Description         = "Maxim one",
                    ImageRef            = "An image ref",
                    StartDate           = DateTime.Now,
                    EndDate             = DateTime.Now,
                    Total = 111
                },
                new DonationProgram
                {
                    DonationProgramId   = 2,
                    DonationProgramName = "Two",
                    Description         = "Maxim two",
                    ImageRef            = "An image refs",
                    StartDate           = DateTime.Now,
                    EndDate             = DateTime.Now,
                    Total = 100
                }
            };

            var context = new Mock <RotaractServrerContext>();

            #region MockDbSetup DonationProgram
            var mockDbSet = new Mock <DbSet <DonationProgram> >();
            mockDbSet.Setup(s => s.FindAsync(It.IsAny <int>())).Returns(Task.FromResult(new DonationProgram()));

            mockDbSet.As <IQueryable <DonationProgram> >()
            .Setup(m => m.Provider)
            .Returns(mockDonationProgramList.AsQueryable().Provider);
            mockDbSet.As <IQueryable <DonationProgram> >()
            .Setup(m => m.Expression)
            .Returns(mockDonationProgramList.AsQueryable().Expression);
            mockDbSet.As <IQueryable <DonationProgram> >()
            .Setup(m => m.ElementType)
            .Returns(mockDonationProgramList.AsQueryable().ElementType);
            mockDbSet.As <IQueryable <DonationProgram> >()
            .Setup(m => m.GetEnumerator())
            .Returns(mockDonationProgramList.GetEnumerator());

            mockDbSet.Setup(m => m.Add(It.IsAny <DonationProgram>()))
            .Callback <DonationProgram>((entity) => mockDonationProgramList.Add(entity));
            context.Setup(c => c.DonationPrograms)
            .Returns(mockDbSet.Object);
            #endregion

            var repoDonationDataAccess = new RotaractRepository(context.Object);

            var donationProgram = new DonationProgram
            {
                DonationProgramId   = 3,
                DonationProgramName = "Three",
                Description         = "Maxim three",
                ImageRef            = "An image refsss",
                StartDate           = DateTime.Now,
                EndDate             = DateTime.Now,
                Total = 333
            };

            repoDonationDataAccess.AddDonationProgram(donationProgram);

            //Asserts
            Assert.IsTrue(mockDonationProgramList.Any(x => x.DonationProgramId == 3));
            Assert.IsTrue(mockDonationProgramList.Any(x => x.DonationProgramName.Equals("Three")));
            Assert.IsTrue(mockDonationProgramList.Any(x => x.Total == 0));
        }
 public void AddDonationProgram(DonationProgram donationProgram)
 {
     donationProgram.Total = 0;
     _context.DonationPrograms.Add(donationProgram);
 }