public async Task <IHttpActionResult> CreateEvent(BepEventDTO bepEventDTO)
        {   //date check working
            DateTime date = (DateTime.Today.AddMinutes(330)).Date;
            var      c    = ((bepEventDTO.Date).Date).CompareTo(date);

            if (c == -1)
            {
                return(BadRequest("please give valid dates given date is earlier than todays date"));
            }
            //ends here
            //check singular event or not

            var count = context.BepEvents.Where(x => (x.OrgId == bepEventDTO.OrgId));

            foreach (BepEvent a in count)
            {
                if ((a.Date).Date.Equals((bepEventDTO.Date).Date))
                {
                    return(BadRequest(" An event posted by you is already scheduled on  the given date"));
                }
            }

            //
            BepOrganization organization     = context.BepOrganizations.SingleOrDefault(x => x.Id == bepEventDTO.OrgId);
            List <BepDonor> offlineDonorList = context.BepDonors.Where(x => (x.OrgId == organization.Id &&
                                                                             x.OnlineStatus == false)).ToList();
            double kms = 5;
            double ulat = organization.LocationLat + (kms / 110.574), llat = organization.LocationLat - (kms / 110.574);
            double longdist = Math.Cos((Math.PI * organization.LocationLat) / 180) * 111.320;
            double ulng = organization.LocationLong + (kms / longdist), llng = organization.LocationLong - (kms / longdist);

            List <BepDonor> onlineDonorList = context.BepDonors.Where(x => ((x.OrgId == organization.Id ||
                                                                             (x.LocationLat <ulat && x.LocationLat> llat && x.LocationLong <ulng && x.LocationLong> llng)) && x.OnlineStatus == true)).ToList();

            List <BepDonor> donorList       = offlineDonorList;

            donorList.AddRange(onlineDonorList);

            //Send Mail to offline donor with event details
            foreach (BepDonor donor in donorList)
            {
                //Send mail with get query of the event id that will display the event details on a webapp based on the response
                string mail = "<!DOCTYPE html><html><head><style>table, th, td {border:1px solid black;border-collapse:collapse;}th, td {padding:5px;}</style></head><body><div style=\"border:5px solid #800000; padding:10px\"><div style=\"background-color:#800000;padding:20px\"><h1 style=\"color:white \">Welcome!</h1></div><p> dear" + " " + donor.Name + ",</p><p> you are cordially invited to this event.please grace us with the your presence. The details are as given below.</br>Thank you.</p><table style=\"width:100%\"><tbody><tr><td>organization</td><td>" +
                              bepEventDTO.OrgName + "</td></tr><tr><td>venue</td><td>" + bepEventDTO.Venue + "</td></tr><tr><td>about</td><td>" + bepEventDTO.About + "</td></tr><tr><td>date</td><td>" + (bepEventDTO.Date).ToString() + "</td></tr><tr><td>phone</td><td>" + bepEventDTO.OrgPhone + "</td></tr><tr><td>email</td><td>" + bepEventDTO.OrgEmail + "</td></tr></tbody></table></div></body></html>";

                Sender.SendMail(donor.Email, "Event details", mail);
            }
            //End send mail code
            foreach (BepDonor donor in onlineDonorList)
            {
                //Send push message
                ;
            }
            BepEvent bepEvent = AutoMapper.Mapper.Map <BepEvent>(bepEventDTO);
            BepEvent current  = await InsertAsync(bepEvent);

            return(CreatedAtRoute("CreateEvent", new { id = current.Id }, AutoMapper.Mapper.Map <BepEventDTO>(current)));
        }
Example #2
0
        public async Task <IHttpActionResult> ImportDonorData(BepDonor donor)
        {
            // Does the donor data exist?
            var count = context.BepDonors.Where(x => x.Phone == donor.Phone).Count();

            if (count > 0)
            {
                return(BadRequest("Phone number already registered!"));
            }
            count = context.BepDonors.Where(x => x.Email == donor.Email).Count();
            if (count > 0)
            {
                return(BadRequest("Email Id already registered!"));
            }
            if (!string.IsNullOrEmpty(donor.BloodGroup))
            {
                switch (donor.BloodGroup)
                {
                case "A+": donor.ReceiverGroups = ",A+,AB+"; break;

                case "O+": donor.ReceiverGroups = ",A+,AB+,O+,B+"; break;

                case "B+": donor.ReceiverGroups = ",B+,AB+"; break;

                case "AB+": donor.ReceiverGroups = ",AB+"; break;

                case "A-": donor.ReceiverGroups = ",A+,AB+,A-,AB-"; break;

                case "O-": donor.ReceiverGroups = ",A+,AB+,O+,B+,A-,AB-,O-,B-"; break;

                case "B-": donor.ReceiverGroups = ",B+,AB+,B-,AB-"; break;

                case "AB-": donor.ReceiverGroups = ",AB+,AB-"; break;
                }
            }
            donor.Subscribed            = true;
            donor.EmergencyAvailability = false;
            donor.OnlineStatus          = false;
            donor.Activated             = false;

            BepDonor current = await InsertAsync(donor);

            BepOrganization org = context.BepOrganizations.Single(x => x.Id == current.OrgId);

            //Send Mail to offline donor with link to download the application

            Sender.SendMail(donor.Email, "please download our APP", "<!DOCTYPE html><html><head></head><body><p>dear " + donor.Name + ",</br>you have been invited to register to our application by " + org.Name + " from " + org.Locality + ".</br>please download our app and register yourself.Join us and increase our network of blood donors.</br>thank you</p><p>click as per your device</br><ul><li><a href=\"#\">windows phone</a></li><li><a href=\"#\">windows pc</a></li><li><a href=\"#\">android</a></li><li><a href=\"#\">ios</a></li></ul></p></body></html>");
            //End send mail code
            return(Ok("Offline Donor registered successfully!"));
        }