예제 #1
0
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        ButtonName = self.request.get('Button')
        FirstName = self.request.get('FirstName')
        LastName = self.request.get('LastName')
        userEmail = self.request.get('userEmail')
        Contact = self.request.get('Contact')
        Query = self.request.get('Query')
        FormSubmittedOn = datetime.now().strftime("%d/%m/%Y at %H:%M:%S")

        ContactUsDBConnect = ContactUsDB(userEmail=userEmail)
        ContactUsDBConnect.FirstName = FirstName
        ContactUsDBConnect.LastName = LastName
        ContactUsDBConnect.Contact = Contact
        ContactUsDBConnect.Query = Query
        ContactUsDBConnect.FormSubmittedOn = FormSubmittedOn
        ContactUsDBConnect.put()

        SendEmail(
            userEmail,
            "Your query was successfully submitted to MediCare team", """
Dear """ + FirstName + """,

This is an automated email sent as a confirmation for your submitted query.

Your query :
""" + Query + """


Your query has been recorded and sent to the concerned team for further action.
Our team will get back to you regarding the same as soon as possible.

Thanks & regards,
MediCare Team.
        """)

        SendEmail(
            "*****@*****.**",
            "Someone have contacted by filling form on contact us page", """
Hi Team,

This is an automated email sent as someone have contacted you using form on contact us page.

User details are:
First Name : """ + FirstName + """
Last Name : """ + LastName + """
Email : """ + userEmail + """
Contact : +353-""" + Contact + """

User query :
""" + Query + """


Please respond to user as soon as possible or within 48 hours for better customer experience.

Thank you.
        """)
        self.redirect("/ContactUs?notification=FormSubmittedSuccessfully")
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        ButtonName = self.request.get('Button')
        RegisteredAs = self.request.get('RegisteredAs')
        ResetStatus = self.request.get('ResetStatus')
        FromPage = self.request.get('FromPage')

        if(ButtonName == "ResetPasswordButton"):
            Password = self.request.get('Password_New')
            Password_Repeat = self.request.get('Password_New_Repeat')
            if(RegisteredAs == "User"):
                Email = self.request.get('Email')
                DBConnect = ndb.Key('UsersDB',Email).get()
                if(DBConnect != None and ResetStatus == hashlib.md5(DBConnect.user_Password.encode()).hexdigest() and DBConnect.ResetPasswordLinkSent == 1):
                    if(Password == Password_Repeat):
                        DBConnect.user_Password = Password
                        DBConnect.ResetPasswordLinkSent = 0
                        DBConnect.put()
                        SendEmail(Email,"Password of your MediCare account was recently changed","""
Dear """+DBConnect.user_FirstName+""",

This is an automated email sent to you in regards of your MediCare account.

It is to inform you that the password of your MediCare account has been recently changed.

Thanks & regards,
MediCare Team.
                        """)
                        self.redirect(FromPage+'?notification=PasswordResetSuccessful')
                    else:
                        self.redirect("/ResetPassword?RegisteredAs="+RegisteredAs+"&userEmail="+Email+"&FromPage="+FromPage+"&ResetStatus="+hashlib.md5(DBConnect.user_Password.encode()).hexdigest()+"&notification=PasswordMissmatch")
                else:
                    self.redirect(FromPage+'?notification=InvalidPasswordResetLink')

            elif(RegisteredAs == "Staff" or RegisteredAs == "Pharmacist"):
                Email = self.request.get('Email')
                DBConnect = ndb.Key('VendorsDB',Email).get()
                if(DBConnect != None and ResetStatus == hashlib.md5(DBConnect.Password.encode()).hexdigest() and DBConnect.ResetPasswordLinkSent == 1):
                    if(Password == Password_Repeat):
                        DBConnect.Password = Password
                        DBConnect.ResetPasswordLinkSent = 0
                        DBConnect.put()
                        SendEmail(Email,"Password of your MediCare's vendor account was recently changed","""
Dear """+DBConnect.FirstName+""",

This is an automated email sent to you in regards of your MediCare account.

It is to inform you that the password of your MediCare account has been recently changed.

Thanks & regards,
MediCare Team.
                        """)
                        self.redirect(FromPage+'?notification=PasswordResetSuccessful')
                    else:
                        self.redirect("/ResetPassword?RegisteredAs="+RegisteredAs+"&vendorEmail="+Email+"&FromPage="+FromPage+"&ResetStatus="+hashlib.md5(DBConnect.Password.encode()).hexdigest()+"&notification=PasswordMissmatch")
                else:
                    self.redirect(FromPage+'?notification=InvalidPasswordResetLink')
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        WebPageLink = "https://medicare-287205.nw.r.appspot.com"

        Button = self.request.get("Button")
        vendorEmail = self.request.get("vendorEmail")
        if(vendorEmail != ""):
            VendorsDBConnect = ndb.Key("VendorsDB",vendorEmail).get()
            if(Button == "EditProfile"):
                EditMode = self.request.get('EditMode')
                if(EditMode == "On"):
                    self.redirect('/VendorHomePage?vendorEmail='+vendorEmail)
                else:
                    self.redirect('/VendorHomePage?vendorEmail='+vendorEmail+'&EditMode=On')
            elif(Button == "Update"):
                FirstName = self.request.get('FirstName_New')
                LastName = self.request.get('LastName_New')
                Contact = self.request.get('Contact_New')
                Address = self.request.get('Address_New')
                if(VendorsDBConnect != None):
                    VendorsDBConnect.FirstName = FirstName
                    VendorsDBConnect.LastName = LastName
                    VendorsDBConnect.Contact = Contact
                    VendorsDBConnect.Address = Address
                    VendorsDBConnect.put()
                    self.redirect('/VendorHomePage?vendorEmail='+vendorEmail+'&notification=ProfileUpdated')
                else:
                    self.redirect('/VendorHomePage?vendorEmail='+vendorEmail+'&notification=InvalidProfile')
            elif(Button == "ChangePassword"):
                if(VendorsDBConnect != None):
                    SendEmail(vendorEmail,"Reset password for your MediCare's vendor account","""
Dear """+VendorsDBConnect.FirstName+""",

This is an automated email sent to reset password of your MediCare account.

Click on below link to reset your password:

"""+WebPageLink+"""/ResetPassword?RegisteredAs="""+VendorsDBConnect.RegisteredAs+"""&vendorEmail="""+vendorEmail+"""&FromPage=/VendorSignIn&ResetStatus="""+hashlib.md5(VendorsDBConnect.Password.encode()).hexdigest()+"""

In case above link doesn't work, copy and paste the same in url bar of your browser.

Thanks & regards,
MediCare Team.
                    """)
                    VendorsDBConnect.ResetPasswordLinkSent = 1
                    VendorsDBConnect.put()
                    self.redirect('/VendorSignIn?notification=PasswordResetLinkSent')

            elif(Button == "DeleteProfile"):
                VendorsDBConnect.key.delete()
                self.redirect('/VendorSignIn?&notification=VendorProfileDeleted')
        else:
            self.redirect('/VendorSignIn')
예제 #4
0
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        userEmail = self.request.get('userEmail')
        Button = self.request.get('Button')
        if (Button == "EditButton"):
            self.redirect('/Profile?userEmail=' + userEmail + '&Mode=Edit')
        elif (Button == "UpdateButton"):
            FirstName = self.request.get('FirstName')
            LastName = self.request.get('LastName')
            Email = self.request.get('userEmail')
            Contact = self.request.get('Contact')
            Address = self.request.get('Address')
            DBConnect = ndb.Key('UsersDB', Email).get()
            if (DBConnect != None):
                API_Key = "AIzaSyDvLc7SvzpX6KP6HCfn033xNKaM8UH3e2w"
                params = {"address": Address, "key": API_Key}
                GoogleAPI = "https://maps.googleapis.com/maps/api/geocode/json"
                url_params = urlencode(params)
                url = GoogleAPI + "?" + url_params
                result = urlfetch.fetch(url=url,
                                        method=urlfetch.POST,
                                        headers=params)
                Latitude = json.loads(
                    result.content
                )['results'][0]['geometry']['location']['lat']
                Longitude = json.loads(
                    result.content
                )['results'][0]['geometry']['location']['lng']
                DBConnect.user_FirstName = FirstName
                DBConnect.user_LastName = LastName
                DBConnect.user_Contact = Contact
                DBConnect.user_Address = Address
                DBConnect.Latitude = Latitude
                DBConnect.Longitude = Longitude
                DBConnect.put()
                SendEmail(
                    Email,
                    "Congratulations! Your MediCare account details are updated successfully",
                    """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email confirmation sent to you in regards of successful updation of your MediCare account.

Thanks & regards,
MediCare Team.
                """)
                self.redirect('/Profile?userEmail=' + userEmail +
                              '&notification=ProfileUpdatedSuccessfully')
            else:
                self.redirect('/Profile?userEmail=' + userEmail +
                              '&notification=ProfileUpdatationFailed')
        else:
            self.redirect('/Profile?userEmail=' + userEmail)
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        userEmail = self.request.get("userEmail")
        if (userEmail != ""):
            UserDetails = ndb.Key('UsersDB', userEmail).get()
            Latitude1 = 0.0
            Longitude2 = 0.0
            if (UserDetails == None):
                self.redirect(
                    '/UserSignIn?notification=EmailIdNotRegisteredOrInActive')
            elif (UserDetails != None and UserDetails.IsActive == 0):
                self.redirect(
                    '/UserSignIn?notification=EmailIdNotRegisteredOrInActive')
            elif (UserDetails != None and UserDetails.IsActive == 1):
                Latitude1 = UserDetails.Latitude
                Longitude1 = UserDetails.Longitude
                CartData = ndb.Key("CartDB", userEmail).get()
                if (CartData != None):
                    UserComments = self.request.get("UserComments")
                    OrderType = self.request.get('OrderType')
                    CartData.UserComments = UserComments
                    Quantity = []
                    PharmacyID = []
                    UniquePharmacy = []
                    Price = []
                    DeliveryCharge = 0.00
                    ServiceCharge = 0.00
                    CartTotal = 0.00
                    Valid = True
                    if (CartData.PrescriptionRequired == 1):
                        Images = self.get_uploads()[0]
                        PrescriptionImage = get_serving_url(Images.key())
                        CartData.PrescriptionImage = PrescriptionImage
                    for i in range(0, len(CartData.ProductID)):
                        Key1 = "Quantity" + CartData.ProductID[i]
                        if (self.request.get(Key1) == ""):
                            self.redirect(
                                '/ShoppingCart?userEmail=' +
                                UserDetails.user_Email +
                                '&notification=InvalidQuantityOrPharmacyName')
                            Valid = False
                            break
                        else:
                            Quantity.append(int(self.request.get(Key1)))
                        Key2 = "PharmacyName" + CartData.ProductID[i]
                        if (self.request.get(Key2) == ""):
                            self.redirect(
                                '/ShoppingCart?userEmail=' +
                                UserDetails.user_Email +
                                '&notification=InvalidQuantityOrPharmacyName')
                            Valid = False
                            break
                        else:
                            PharmacyID.append(self.request.get(Key2))
                    if (OrderType != ""):
                        if (Valid == True):
                            CartData.Quantity = Quantity
                            CartData.PharmacyID = PharmacyID
                            CartData.OrderType = OrderType
                            if (OrderType == "Delivery"):
                                for i in range(0, len(CartData.PharmacyID)):
                                    VPData = ndb.Key(
                                        "VendorProductsDB",
                                        CartData.PharmacyID[i] + "" +
                                        CartData.ProductID[i]).get()
                                    Price.append(VPData.Price)
                                    CartTotal = CartTotal + (
                                        VPData.Price * CartData.Quantity[i])
                                    if (CartData.PharmacyID[i]
                                            not in UniquePharmacy):
                                        UniquePharmacy.append(
                                            CartData.PharmacyID[i])
                                for i in UniquePharmacy:
                                    PharmacyData = ndb.Key("PharmacyDB",
                                                           i).get()
                                    if (PharmacyData != None):
                                        Latitude2 = PharmacyData.Latitude
                                        Longitude2 = PharmacyData.Longitude
                                        DifferenceInLatitude = radians(
                                            Latitude2 - Latitude1)
                                        DifferenceInLongitude = radians(
                                            Longitude2 - Longitude1)
                                        Formula = (sin(
                                            DifferenceInLatitude / 2
                                        )**2) + cos(radians(Latitude1)) * cos(
                                            radians(Latitude2)) * (sin(
                                                DifferenceInLongitude / 2)**2)
                                        Result = 6373.0 * 2 * atan2(
                                            sqrt(Formula), sqrt(1 - Formula))
                                        if (round(Result, 3) <= 1.5):
                                            DeliveryCharge = DeliveryCharge + 1.00
                                        elif (round(Result, 3) > 1.5
                                              and round(Result, 3) <= 3.0):
                                            DeliveryCharge = DeliveryCharge + 2.00
                                        elif (round(Result, 3) > 3.0
                                              and round(Result, 3) <= 4.5):
                                            DeliveryCharge = DeliveryCharge + 3.00
                                        elif (round(Result, 3) > 4.5
                                              and round(Result, 3) <= 6.0):
                                            DeliveryCharge = DeliveryCharge + 4.00
                                        else:
                                            DeliveryCharge = DeliveryCharge + 5.00
                                ServiceCharge = 1.00
                            else:
                                for i in range(0, len(CartData.PharmacyID)):
                                    VPData = ndb.Key(
                                        "VendorProductsDB",
                                        CartData.PharmacyID[i] + "" +
                                        CartData.ProductID[i]).get()
                                    Price.append(VPData.Price)
                                    CartTotal = CartTotal + (
                                        VPData.Price * CartData.Quantity[i])
                            CartData.Price = Price
                            CartData.DeliveryCharge = DeliveryCharge
                            CartData.ServiceCharge = ServiceCharge
                            CartTotal = CartTotal + DeliveryCharge + ServiceCharge
                            CartData.CartTotal = CartTotal
                            CartData.put()
                            # Now placing request in orders for review.
                            OrderID = datetime.now().strftime("%Y%m%d%H%M%S")
                            OrderPlacedOn = datetime.now().strftime(
                                "%d/%m/%Y at %H:%M:%S")
                            UniquePharmacyID = []
                            for i in range(0, len(CartData.PharmacyID)):
                                if (CartData.PharmacyID[i]
                                        not in UniquePharmacyID):
                                    UniquePharmacyID.append(
                                        CartData.PharmacyID[i])
                            for i in range(0, len(UniquePharmacyID)):
                                OrdersConnect = OrdersDB(userEmail=userEmail)
                                OrdersConnect.OrderID = OrderID
                                OrdersConnect.OrderType = CartData.OrderType
                                OrdersConnect.PharmacyID = UniquePharmacyID[i]
                                PharmacyData = ndb.Key(
                                    "PharmacyDB", UniquePharmacyID[i]).get()
                                PR = 0
                                DC = 0.00
                                if (PharmacyData != None
                                        and CartData.OrderType == "Delivery"):
                                    Latitude2 = PharmacyData.Latitude
                                    Longitude2 = PharmacyData.Longitude
                                    DifferenceInLatitude = radians(Latitude2 -
                                                                   Latitude1)
                                    DifferenceInLongitude = radians(
                                        Longitude2 - Longitude1)
                                    Formula = (sin(
                                        DifferenceInLatitude /
                                        2)**2) + cos(radians(Latitude1)) * cos(
                                            radians(Latitude2)) * (sin(
                                                DifferenceInLongitude / 2)**2)
                                    Result = 6373.0 * 2 * atan2(
                                        sqrt(Formula), sqrt(1 - Formula))
                                    if (round(Result, 3) <= 1.5):
                                        DC = 1.00
                                    elif (round(Result, 3) > 1.5
                                          and round(Result, 3) <= 3.0):
                                        DC = 2.00
                                    elif (round(Result, 3) > 3.0
                                          and round(Result, 3) <= 4.5):
                                        DC = 3.00
                                    elif (round(Result, 3) > 4.5
                                          and round(Result, 3) <= 6.0):
                                        DC = 4.00
                                    else:
                                        DC = 5.00
                                OrdersConnect.OrderTotal = 0.00
                                for j in range(0, len(CartData.ProductID)):
                                    PD = ndb.Key("ProductsDB",
                                                 CartData.ProductID[j]).get()
                                    if (UniquePharmacyID[i]
                                            == CartData.PharmacyID[j]
                                            and PD.PrescriptionRequired == 1
                                            and PR == 0):
                                        PR = 1
                                        OrdersConnect.PrescriptionImage = CartData.PrescriptionImage
                                    elif (UniquePharmacyID[i]
                                          == CartData.PharmacyID[j]
                                          and PD.PrescriptionRequired == 0
                                          and PR == 0):
                                        PR = 0
                                    if (UniquePharmacyID[i] ==
                                            CartData.PharmacyID[j]):
                                        OrdersConnect.ProductID.append(
                                            CartData.ProductID[j])
                                        OrdersConnect.Price.append(
                                            CartData.Price[j])
                                        OrdersConnect.Quantity.append(
                                            CartData.Quantity[j])
                                        OrdersConnect.OrderTotal = OrdersConnect.OrderTotal + (
                                            CartData.Quantity[j] *
                                            CartData.Price[j])
                                OrdersConnect.PrescriptionRequired = PR
                                OrdersConnect.DeliveryCharge = DC
                                OrdersConnect.OrderTotal = OrdersConnect.OrderTotal + DC + CartData.ServiceCharge
                                OrdersConnect.ServiceCharge = CartData.ServiceCharge
                                OrdersConnect.OrderPlacedOn = OrderPlacedOn
                                OrdersConnect.UserComments = CartData.UserComments
                                OrdersConnect.GrandTotal = CartData.CartTotal
                                OrdersConnect.GrandDC = CartData.DeliveryCharge
                                OrdersConnect.OrderStatus = "Active"
                                OrdersConnect.OrderSubStatus = "Reviewing"
                                OrdersConnect.put()
                            SendEmail(
                                userEmail,
                                "Your order has been successfully submitted for reviewing at MediCare",
                                """
Dear """ + UserDetails.user_FirstName + """,

This is an automated email confirmation sent to you in regards of your recently placed order at MediCare.

Your order has been successfully placed on """ + OrderPlacedOn + """.
You can view the same in "My Orders" tab after logging into your MediCare account.

Please note your Order ID : """ + OrderID + """ for the reference.

Thanks & regards,
MediCare Team.
                            """)
                            CartData.key.delete()
                            self.redirect('/?userEmail=' +
                                          UserDetails.user_Email)
                        else:
                            self.redirect(
                                '/ShoppingCart?userEmail=' +
                                UserDetails.user_Email +
                                '&notification=InvalidQuantityOrPharmacyName')
                    else:
                        self.redirect('/ShoppingCart?userEmail=' +
                                      UserDetails.user_Email +
                                      '&notification=InvalidOrderType')
                else:
                    self.redirect('/ShoppingCart?userEmail=' +
                                  UserDetails.user_Email)
            else:
                self.redirect('/UserSignIn')
        else:
            self.redirect('/UserSignIn')
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        SignInAs = self.request.get("SignInAs")
        userEmail = self.request.get("userEmail")
        vendorEmail = self.request.get("vendorEmail")
        if (SignInAs == "Vendor" and vendorEmail != ""):
            VendorDetails = ndb.Key('VendorsDB', vendorEmail).get()
            if (VendorDetails != None and VendorDetails.IsActive == 0):
                self.redirect(
                    '/VendorSignIn?notification=EmailIdNotRegisteredOrInActive'
                )
            elif (VendorDetails == None):
                self.redirect(
                    '/VendorSignIn?notification=EmailIdNotRegisteredOrInActive'
                )
            elif (VendorDetails != None and VendorDetails.IsActive == 1):
                Button = self.request.get('Button')
                PharmacyID = VendorDetails.PharmacyID
                OrderID = self.request.get('OrderID')
                userEmail = self.request.get('userEmail')
                VendorComments = self.request.get("VendorComments")
                OrderDetails = OrdersDB.query(
                    OrdersDB.OrderID == OrderID,
                    OrdersDB.PharmacyID == PharmacyID,
                    OrdersDB.userEmail == userEmail).get()
                if (OrderDetails != None and Button == "SubmitForPayment"):
                    Quantity = []
                    OrderTotal = 0.00
                    for i in range(0, len(OrderDetails.ProductID)):
                        Key = "Quantity" + str(OrderDetails.ProductID[i])
                        Q = self.request.get(Key)
                        Quantity.append(int(Q))
                        OrderTotal = OrderTotal + (int(Q) *
                                                   OrderDetails.Price[i])
                    OrderTotal = OrderTotal + OrderDetails.DeliveryCharge + OrderDetails.ServiceCharge
                    OrderDetails.Quantity = Quantity
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderTotal = OrderTotal
                    self.response.write(OrderTotal)
                    if (len(OrderDetails.ProductID) != 0):
                        OrderDetails.OrderSubStatus = "PaymentRequired"
                    OrderDetails.put()
                    SendEmail(
                        OrderDetails.userEmail,
                        "Your order uploaded with Prescreption requires payment",
                        """
Dear """ + OrderDetails.userEmail + """,

This is an automated email confirmation sent to you in regards of your placed order at MediCare.

Your order (""" + OrderDetails.OrderID +
                        """) requires payment to proceed further.
You can make payment by loging into your MediCare account and by viewing the order number.

Thanks & regards,
MediCare Team.
                    """)
                    self.redirect(
                        '/ViewOrderDetails?SignInAs=Vendor&vendorEmail=' +
                        VendorDetails.Email + '&OrderID=' +
                        OrderDetails.OrderID)
                elif (OrderDetails != None and Button == "CancelOrder"):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.DeliveryCharge = 0.0
                    OrderDetails.ServiceCharge = 0.0
                    OrderDetails.OrderTotal = 0.0
                    for i in range(0, len(OrderDetails.Quantity)):
                        OrderDetails.Quantity[i] = 0
                    OrderDetails.OrderStatus = "Completed"
                    OrderDetails.OrderSubStatus = "CancelledByVendor"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    SendEmail(
                        OrderDetails.userEmail,
                        "Your order has been cancelled by Vendor", """
Dear MediCare User,

This is an automated email confirmation sent to you in regards of your placed order at MediCare.

Your whole order (""" + OrderDetails.OrderID +
                        """) or a part of this order has been cancelled by vendor. You can view the same in "My Orders" tab after logging into your MediCare account.
In case you are able to view same order id in Active Order, this may be due to the fact few items from the whole order are still under consideration.

Thanks & regards,
MediCare Team.
                    """)
                    self.redirect(
                        '/ViewOrderDetails?SignInAs=Vendor&vendorEmail=' +
                        VendorDetails.Email + '&OrderID=' +
                        OrderDetails.OrderID)
                elif (OrderDetails != None and Button == "MarkPacking"):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "PackingInProgress"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    self.redirect('/VendorOrders?vendorEmail=' +
                                  VendorDetails.Email)
                elif (OrderDetails != None and Button == "MarkPacked"):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "ProductPacked"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    self.redirect('/VendorOrders?vendorEmail=' +
                                  VendorDetails.Email)
                elif (OrderDetails != None and Button == "OutForDelivery"
                      and OrderDetails.OrderType == "Delivery"):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "OutForDelivery"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    self.redirect('/VendorOrders?vendorEmail=' +
                                  VendorDetails.Email)
                elif (OrderDetails != None and Button == "ReadyForCollection"
                      and OrderDetails.OrderType == "Collection"):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "ReadyForCollection"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    self.redirect('/VendorOrders?vendorEmail=' +
                                  VendorDetails.Email)
                elif (
                        OrderDetails != None and
                    (Button == "MarkDelivered" or Button == "MarkCollected")):
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "OrderComplete"
                    OrderDetails.OrderStatus = "Completed"
                    OrderDetails.StatusChangedBy = VendorDetails.Email
                    OrderDetails.put()
                    SendEmail(
                        OrderDetails.userEmail,
                        "Your order has been successfully completed", """
Dear MediCare User,

This is an automated email confirmation sent to you in regards of your placed order at MediCare.

Your order (""" + OrderDetails.OrderID +
                        """) has been successfully complete. You can view the same in "My Orders" tab after logging into your MediCare account.
In case you are able to view same order id in Active Order, this may be due to the fact few items from the whole order are still yet to be delivered.

Thanks & regards,
MediCare Team.
                    """)
                    self.redirect('/VendorOrders?vendorEmail=' +
                                  VendorDetails.Email)
                elif (OrderDetails != None and Button == "AskUserToUpload"):
                    VendorComments = self.request.get("VendorComments1")
                    OrderDetails.VendorComments = VendorComments
                    OrderDetails.OrderSubStatus = "ReUploadPrescription"
                    OrderDetails.put()
                    self.redirect(
                        '/ViewOrderDetails?SignInAs=Vendor&vendorEmail=' +
                        VendorDetails.Email + '&OrderID=' +
                        OrderDetails.OrderID)
                else:
                    self.redirect(
                        '/ViewOrderDetails?SignInAs=Vendor&vendorEmail=' +
                        VendorDetails.Email + '&OrderID=' +
                        OrderDetails.OrderID)
        elif (SignInAs == "User" and userEmail != ""):
            Button = self.request.get('Button')
            OrderID = self.request.get('OrderID')
            OrderDetails = OrdersDB.query(
                OrdersDB.OrderID == OrderID,
                OrdersDB.userEmail == userEmail).fetch()
            if (OrderDetails != [] and Button == "UploadPrescription"):
                PrescriptionImage = self.get_uploads()[0]
                PrescriptionImage = get_serving_url(PrescriptionImage.key())
                for i in range(0, len(OrderDetails)):
                    if (OrderDetails[i].PrescriptionRequired == 1
                            and OrderDetails[i].OrderSubStatus
                            == "ReUploadPrescription"):
                        OrderDetails[i].PrescriptionImage = PrescriptionImage
                        OrderDetails[i].OrderSubStatus = "Reviewing"
                        OrderDetails[i].put()
                self.redirect('/ViewOrderDetails?SignInAs=User&userEmail=' +
                              userEmail + '&OrderID=' +
                              OrderDetails[0].OrderID)
            elif (OrderDetails != [] and Button == "CancelOrder"):
                for i in range(0, len(OrderDetails)):
                    OrderDetails[i].DeliveryCharge = 0.0
                    OrderDetails[i].ServiceCharge = 0.0
                    OrderDetails[i].OrderTotal = 0.0
                    for j in range(0, len(OrderDetails[i].Quantity)):
                        OrderDetails[i].Quantity[j] = 0
                    OrderDetails[i].OrderStatus = "Completed"
                    OrderDetails[i].OrderSubStatus = "CancelledByCustomer"
                    OrderDetails[i].put()
                SendEmail(
                    userEmail, "You have cancelled your order at MediCare", """
Dear MediCare User,

This is an automated email confirmation sent to you in regards of your placed order at MediCare.

Your whole order (""" + OrderDetails[0].OrderID +
                    """) has been cancelled by you. You can view the same in "My Orders" tab after logging into your MediCare account.

Thanks & regards,
MediCare Team.
                """)
                self.redirect('/MyOrders?userEmail=' + userEmail)
            elif (OrderDetails != [] and Button == "Pay"):
                for i in range(0, len(OrderDetails)):
                    if (OrderDetails[i].OrderStatus != "Completed"):
                        OrderDetails[i].OrderSubStatus = "PaymentSuccessful"
                        OrderDetails[i].put()
                self.redirect('/ViewOrderDetails?SignInAs=User&userEmail=' +
                              userEmail + '&OrderID=' +
                              OrderDetails[0].OrderID)
        else:
            self.redirect('/')
예제 #7
0
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        WebPageLink = "https://medicare-287205.nw.r.appspot.com/"
        ButtonName = self.request.get('Button')
        if (ButtonName == "SignInButton"):
            vendorEmail = self.request.get('vendorEmail')
            vendorPassword = self.request.get('vendorPassword')
            DBConnect = ndb.Key('VendorsDB', vendorEmail).get()
            if (DBConnect != None):
                if (DBConnect.Password == vendorPassword
                        and DBConnect.IsActive == 1):
                    self.redirect('/VendorHomePage?vendorEmail=' + vendorEmail)
                elif (DBConnect.Password != vendorPassword
                      and DBConnect.IsActive == 1):
                    self.redirect(
                        '/VendorSignIn?notification=PasswordMissmatch')
                elif (DBConnect.Password == vendorPassword
                      and DBConnect.IsActive == 0):
                    self.redirect('/VendorSignIn?notification=VendorInActive')
            else:
                self.redirect(
                    '/VendorSignIn?notification=EmailIdNotRegistered')

        elif (ButtonName == "SignUpButton"):
            PharmacyID = self.request.get('PharmacyID')
            FirstName = self.request.get('FirstName')
            LastName = self.request.get('LastName')
            Email = self.request.get('vendorEmail_SU')
            Password = self.request.get('vendorPassword_SU')
            Contact = self.request.get('Contact')
            Address = self.request.get('Address')
            Gender = self.request.get('Gender')
            DOB = self.request.get('DOB')
            RegisteredAs = self.request.get('RegisteredAs')
            DBConnect_Pharmacy = ndb.Key('PharmacyDB', PharmacyID).get()
            if (DBConnect_Pharmacy != None):
                if (DBConnect_Pharmacy.IsActive == 1):
                    if (DBConnect_Pharmacy.EmailVerified == 1):
                        DBConnect = ndb.Key('VendorsDB', Email).get()
                        if (DBConnect == None):
                            DBConnect = VendorsDB(id=Email)
                            DBConnect.PharmacyID = PharmacyID
                            DBConnect.FirstName = FirstName
                            DBConnect.LastName = LastName
                            DBConnect.Email = Email
                            DBConnect.Password = Password
                            DBConnect.Contact = Contact
                            DBConnect.Address = Address
                            DBConnect.Gender = Gender
                            DBConnect.DOB = DOB
                            DBConnect.RegisteredAs = RegisteredAs
                            DBConnect.EmailVerified = 0
                            DBConnect.ResetPasswordLinkSent = 0
                            DBConnect.IsActive = 1
                            DBConnect.put()
                            SendEmail(
                                Email,
                                "Congratulations! Your MediCare's vendor account has been setup",
                                """
Dear """ + DBConnect.FirstName + """,

This is an automated email confirmation sent to you in regards of your MediCare account.

Your MediCare account has been registered as : '""" + RegisteredAs +
                                """' for vendor : """ +
                                DBConnect_Pharmacy.PharmacyName + """

Please click on below link to verify your Email Id:
""" + WebPageLink + """VerifyEmail?RegisteredAs=""" + RegisteredAs +
                                """&vendorEmail=""" + Email +
                                """&VerifyStatus=""" +
                                hashlib.md5(Password.encode()).hexdigest() +
                                """

Thanks & regards,
MediCare Team.
                            """)
                            self.redirect(
                                '/VendorSignIn?notification=VendorSuccessfullyRegistered'
                            )
                        else:
                            self.redirect(
                                '/VendorSignIn?notification=EmailAlreadyRegistered'
                            )
                    else:
                        self.redirect(
                            '/VendorSignIn?notification=EmailIdNotVerified')
                else:
                    self.redirect('/VendorSignIn?notification=VendorNotActive')
            else:
                self.redirect('/VendorSignIn?notification=InvalidPharmacyID')

        elif (ButtonName == "ForgotPasswordButton"):
            Email = self.request.get('vendorEmail_FP')
            DBConnect = ndb.Key('VendorsDB', Email).get()
            if (DBConnect != None):
                SendEmail(
                    Email, "Reset password for your MediCare's vendor account",
                    """
Dear """ + DBConnect.FirstName + """,

This is an automated email sent to reset password of your MediCare account.

Click on below link to reset your password:

""" + WebPageLink + """ResetPassword?RegisteredAs=""" +
                    DBConnect.RegisteredAs + """&vendorEmail=""" + Email +
                    """&FromPage=/VendorSignIn&ResetStatus=""" +
                    hashlib.md5(DBConnect.Password.encode()).hexdigest() + """

In case above link doesn't work, copy and paste the same in url bar of your browser.

Thanks & regards,
MediCare Team.
                """)
                DBConnect.ResetPasswordLinkSent = 1
                DBConnect.put()
                self.redirect(
                    '/VendorSignIn?notification=PasswordResetLinkSent')
            else:
                self.redirect(
                    '/VendorSignIn?notification=EmailIdNotRegistered')
예제 #8
0
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        WebPageLink = "https://medicare-287205.nw.r.appspot.com/"
        ButtonName = self.request.get('Button')

        if (ButtonName == "SignInButton"):
            userEmail = self.request.get('userEmail')
            userPassword = self.request.get('userPassword')
            DBConnect = ndb.Key('UsersDB', userEmail).get()
            if (DBConnect != None and DBConnect.IsActive == 1):
                if (DBConnect.user_Password == userPassword):
                    self.redirect('/?userEmail=' + userEmail)
                else:
                    self.redirect('/UserSignIn?notification=PasswordMissmatch')
            else:
                self.redirect(
                    '/UserSignIn?notification=EmailIdNotRegisteredOrInActive')

        elif (ButtonName == "SignUpButton"):
            FirstName = self.request.get('FirstName')
            LastName = self.request.get('LastName')
            Email = self.request.get('userEmail_SU')
            Password = self.request.get('userPassword_SU')
            Contact = self.request.get('Contact')
            Address = self.request.get('Address')
            Gender = self.request.get('Gender')
            DOB = self.request.get('DOB')
            DBConnect = ndb.Key('UsersDB', Email).get()
            if (DBConnect == None):
                API_Key = "AIzaSyDvLc7SvzpX6KP6HCfn033xNKaM8UH3e2w"
                params = {"address": Address, "key": API_Key}
                GoogleAPI = "https://maps.googleapis.com/maps/api/geocode/json"
                url_params = urlencode(params)
                url = GoogleAPI + "?" + url_params
                result = urlfetch.fetch(url=url,
                                        method=urlfetch.POST,
                                        headers=params)
                Latitude = json.loads(
                    result.content
                )['results'][0]['geometry']['location']['lat']
                Longitude = json.loads(
                    result.content
                )['results'][0]['geometry']['location']['lng']
                DBConnect = UsersDB(id=Email)
                DBConnect.user_FirstName = FirstName
                DBConnect.user_LastName = LastName
                DBConnect.user_Email = Email
                DBConnect.user_Password = Password
                DBConnect.user_Contact = Contact
                DBConnect.user_Address = Address
                DBConnect.Latitude = Latitude
                DBConnect.Longitude = Longitude
                DBConnect.user_Gender = Gender
                DBConnect.user_DOB = DOB
                DBConnect.EmailVerified = 0
                DBConnect.ResetPasswordLinkSent = 0
                DBConnect.IsActive = 1
                DBConnect.put()
                SendEmail(
                    Email,
                    "Congratulations! Your MediCare account has been setup",
                    """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email confirmation sent to you in regards of your MediCare account.

Please click on below link to verify your Email Id:
""" + WebPageLink + """VerifyEmail?RegisteredAs=User&userEmail=""" + Email +
                    """&VerifyStatus=""" +
                    hashlib.md5(DBConnect.user_Password.encode()).hexdigest() +
                    """

Thanks & regards,
MediCare Team.
                """)
                self.redirect(
                    '/UserSignIn?notification=UserSuccessfullyRegistered')
            else:
                self.redirect(
                    '/UserSignIn?notification=EmailAlreadyRegistered')

        elif (ButtonName == "ForgotPasswordButton"):
            Email = self.request.get('userEmail_FP')
            DBConnect = ndb.Key('UsersDB', Email).get()
            if (DBConnect != None):
                SendEmail(
                    Email, "Reset password for your MediCare account", """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email sent to reset password of your MediCare account.

Click on below link to reset your password:

""" + WebPageLink + """ResetPassword?RegisteredAs=User&userEmail=""" + Email +
                    """&FromPage=/UserSignIn&ResetStatus=""" +
                    hashlib.md5(DBConnect.user_Password.encode()).hexdigest() +
                    """

In case above link doesn't work, copy and paste the same in url bar of your browser.

Thanks & regards,
MediCare Team.
                """)
                DBConnect.ResetPasswordLinkSent = 1
                DBConnect.put()
                self.redirect('/UserSignIn?notification=PasswordResetLinkSent')
            else:
                self.redirect('/UserSignIn?notification=EmailIdNotRegistered')
    def post(self):
        self.response.headers['Content-Type'] = 'application/json'

        WebPageLink = "https://medicare-287205.nw.r.appspot.com/"
        JD = json.loads(self.request.body)
        ResponseData = {}
        FunctionOption = JD["function"]
        userEmail = JD["userEmail"]
        if (userEmail != "" and userEmail != None):
            DBConnect = ndb.Key('UsersDB', userEmail).get()

# Below is code for SignUp.
        if (FunctionOption == "SignUp" and DBConnect == None):
            API_Key = "AIzaSyDvLc7SvzpX6KP6HCfn033xNKaM8UH3e2w"
            params = {"address": JD["Address"], "key": API_Key}
            GoogleAPI = "https://maps.googleapis.com/maps/api/geocode/json"
            url_params = urlencode(params)
            url = GoogleAPI + "?" + url_params
            result = urlfetch.fetch(url=url,
                                    method=urlfetch.POST,
                                    headers=params)
            Latitude = json.loads(
                result.content)['results'][0]['geometry']['location']['lat']
            Longitude = json.loads(
                result.content)['results'][0]['geometry']['location']['lng']
            DBConnect = UsersDB(id=userEmail)
            DBConnect.user_FirstName = JD["FirstName"]
            DBConnect.user_LastName = JD["LastName"]
            DBConnect.user_Email = userEmail
            DBConnect.user_Password = JD["Password"]
            DBConnect.user_Contact = JD["Contact"]
            DBConnect.user_Address = JD["Address"]
            DBConnect.Latitude = Latitude
            DBConnect.Longitude = Longitude
            DBConnect.user_Gender = JD["Gender"]
            DBConnect.user_DOB = JD["DOB"]
            DBConnect.EmailVerified = 0
            DBConnect.ResetPasswordLinkSent = 0
            DBConnect.IsActive = 1
            DBConnect.put()
            SendEmail(
                userEmail,
                "Congratulations! Your MediCare account has been setup", """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email confirmation sent to you in regards of your MediCare account.

Please click on below link to verify your Email Id:
""" + WebPageLink + """VerifyEmail?RegisteredAs=User&userEmail=""" +
                userEmail + """&VerifyStatus=""" +
                hashlib.md5(DBConnect.user_Password.encode()).hexdigest() + """

Thanks & regards,
MediCare Team.
            """)
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserSuccessfullyRegistered"
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "SignUp" and DBConnect != None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserAlreadyRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for SignIn.
        elif (FunctionOption == "SignIn" and DBConnect != None):
            userPassword = JD["Password"]
            if (DBConnect.IsActive == 1):
                if (DBConnect.user_Password == userPassword):
                    ResponseData['userEmail'] = userEmail
                    ResponseData['notification'] = "SuccessfulSignIn"
                    ResponseData['FirstName'] = DBConnect.user_FirstName
                    ResponseData['LastName'] = DBConnect.user_LastName
                    ResponseData['Contact'] = DBConnect.user_Contact
                    ResponseData['Address'] = DBConnect.user_Address
                    ResponseData['Gender'] = DBConnect.user_Gender
                    ResponseData['DOB'] = DBConnect.user_DOB
                    ResponseData['EmailVerified'] = DBConnect.EmailVerified
                    self.response.write(json.dumps(ResponseData))
                else:
                    ResponseData['userEmail'] = userEmail
                    ResponseData['notification'] = "PasswordMissmatch"
                    self.response.write(json.dumps(ResponseData))
            else:
                ResponseData['userEmail'] = userEmail
                ResponseData['notification'] = "UserInActive"
                self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "SignIn" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for Forgot Password.
        elif (FunctionOption == "ForgotPassword" and DBConnect != None):
            DBConnect.ResetPasswordLinkSent = 1
            DBConnect.put()
            SendEmail(
                userEmail, "Reset password for your MediCare account", """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email sent to reset password of your MediCare account.

Click on below link to reset your password:

""" + WebPageLink + """ResetPassword?RegisteredAs=User&userEmail=""" +
                userEmail + """&FromPage=/UserSignIn&ResetStatus=""" +
                hashlib.md5(DBConnect.user_Password.encode()).hexdigest() + """

In case above link doesn't work, copy and paste the same in url bar of your browser.

Thanks & regards,
MediCare Team.
            """)
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "ResetLinkSent"
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "ForgotPassword" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for DeletingUserProfile.
        elif (FunctionOption == "DeleteUser" and DBConnect != None):
            DBConnect.key.delete()
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserSuccessfullyDeleted"
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "DeleteUser" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for HomePageAllProductsID.
        elif (FunctionOption == "AllProductID"):
            ProductsData = ProductsDB.query().fetch()
            ResponseProductID = {}
            Product = []
            for i in range(0, len(ProductsData)):
                Product.append(ProductsData[i].ProductID)
            ResponseProductID['ProductID'] = Product
            self.response.write(json.dumps(ResponseProductID))

# Below is code for HomePageAllProductsData.
        elif (FunctionOption == "ProductData"):
            ResponseProduct = {}
            ProductID = JD["ProductID"]
            ProductData = ndb.Key("ProductsDB", ProductID).get()
            ResponseProduct['ProductID'] = ProductData.ProductID
            ResponseProduct['ProductName'] = ProductData.ProductName
            ResponseProduct['Image'] = ProductData.Images[0]
            ResponseProduct['Description'] = ProductData.Description
            ResponseProduct['Dosage'] = ProductData.Dosage
            ResponseProduct['Category'] = ProductData.Category
            ResponseProduct['Ingredients'] = ProductData.Ingredients
            ResponseProduct['Price'] = ProductData.Price
            ResponseProduct['ProductLife'] = ProductData.ProductLife
            ResponseProduct['Quantity'] = ProductData.Quantity
            ResponseProduct[
                'PrescriptionRequired'] = ProductData.PrescriptionRequired
            Stock = []
            for j in range(0, len(ProductData.StockedIn)):
                Stock.append(ProductData.StockedIn[j])
            ResponseProduct['StockedIn'] = Stock
            self.response.write(json.dumps(ResponseProduct))

# Below is code to add products to cart.
        elif (FunctionOption == "AddToCart" and DBConnect != None):
            ProductID = JD["ProductID"]
            ProductDBStatus = ndb.Key("ProductsDB", ProductID).get()
            CartDBStatus = ndb.Key("CartDB", userEmail).get()
            if (CartDBStatus != None):
                if (ProductID not in CartDBStatus.ProductID):
                    CartDBStatus.ProductID.append(ProductID)
                    CartDBStatus.Quantity.append(0)
                    CartDBStatus.PharmacyID.append("None")
                    if (ProductDBStatus.PrescriptionRequired == 1
                            and CartDBStatus.PrescriptionRequired != 1):
                        CartDBStatus.PrescriptionRequired = 1
            else:
                CartDBStatus = CartDB(id=userEmail)
                CartDBStatus.userEmail = userEmail
                CartDBStatus.OrderType = "None"
                CartDBStatus.ProductID.append(ProductID)
                CartDBStatus.Quantity.append(0)
                CartDBStatus.PharmacyID.append("None")
                if (ProductDBStatus.PrescriptionRequired == 1):
                    CartDBStatus.PrescriptionRequired = 1
                else:
                    CartDBStatus.PrescriptionRequired = 0
            CartDBStatus.put()
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "ProductSuccessfullyAdded"
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "AddToCart" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code to remove products from cart.
        elif (FunctionOption == "RemoveFromCart" and DBConnect != None):
            ProductID = JD["ProductID"]
            ProductData = ndb.Key("ProductsDB", ProductID).get()
            CartData = ndb.Key("CartDB", userEmail).get()
            if (CartData != None):
                if (len(CartData.ProductID) > 1):
                    for i in range(0, len(CartData.ProductID)):
                        if (CartData.ProductID[i] == ProductID):
                            if (ProductData.PrescriptionRequired == 1):
                                CartData.PrescriptionRequired = 0
                                del CartData.PrescriptionImage
                            del CartData.ProductID[i]
                            del CartData.Quantity[i]
                            del CartData.PharmacyID[i]
                            CartData.put()
                            break
                    for i in range(0, len(CartData.ProductID)):
                        PD = ndb.Key("ProductsDB", CartData.ProductID[i]).get()
                        if (PD.PrescriptionRequired == 1):
                            CartData.PrescriptionRequired = 1
                            CartData.put()
                else:
                    CartData.key.delete()
                ResponseData['notification'] = "ProductSuccessfullyRemoved"
            else:
                ResponseData['notification'] = "FailedToRemoveProduct"
            ResponseData['userEmail'] = userEmail
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "RemoveFromCart" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for Fetching user profile data.
        elif (FunctionOption == "FetchProfileData" and DBConnect != None):
            ResponseData['userEmail'] = DBConnect.user_Email
            ResponseData['notification'] = "ProfileDataFound"
            ResponseData['FirstName'] = DBConnect.user_FirstName
            ResponseData['LastName'] = DBConnect.user_LastName
            ResponseData['Contact'] = DBConnect.user_Contact
            ResponseData['Address'] = DBConnect.user_Address
            ResponseData['Gender'] = DBConnect.user_Gender
            ResponseData['DOB'] = DBConnect.user_DOB
            ResponseData['EmailVerified'] = DBConnect.EmailVerified
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "FetchProfileData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for updating user profile data.
        elif (FunctionOption == "UpdateProfileData" and DBConnect != None):
            API_Key = "AIzaSyDvLc7SvzpX6KP6HCfn033xNKaM8UH3e2w"
            params = {"address": JD["Address"], "key": API_Key}
            GoogleAPI = "https://maps.googleapis.com/maps/api/geocode/json"
            url_params = urlencode(params)
            url = GoogleAPI + "?" + url_params
            result = urlfetch.fetch(url=url,
                                    method=urlfetch.POST,
                                    headers=params)
            DBConnect.user_FirstName = JD["FirstName"]
            DBConnect.user_LastName = JD["LastName"]
            DBConnect.user_Contact = JD["Contact"]
            DBConnect.user_Address = JD["Address"]
            DBConnect.Latitude = json.loads(
                result.content)['results'][0]['geometry']['location']['lat']
            DBConnect.Longitude = json.loads(
                result.content)['results'][0]['geometry']['location']['lng']
            DBConnect.put()
            SendEmail(
                DBConnect.user_Email,
                "Congratulations! Your MediCare account details are updated successfully",
                """
Dear """ + DBConnect.user_FirstName + """,

This is an automated email confirmation sent to you in regards of successful updation of your MediCare account.

Thanks & regards,
MediCare Team.
            """)
            ResponseData['userEmail'] = DBConnect.user_Email
            ResponseData['notification'] = "ProfileSuccessfullyUpdated"
            ResponseData['FirstName'] = DBConnect.user_FirstName
            ResponseData['LastName'] = DBConnect.user_LastName
            ResponseData['Contact'] = DBConnect.user_Contact
            ResponseData['Address'] = DBConnect.user_Address
            ResponseData['Gender'] = DBConnect.user_Gender
            ResponseData['DOB'] = DBConnect.user_DOB
            ResponseData['EmailVerified'] = DBConnect.EmailVerified
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "UpdateProfileData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for searching product and returning product id if keyword matches.
        elif (FunctionOption == "SearchProduct"):
            ProductIDs = []
            SearchKeyword = JD["SearchKeyword"]
            if (SearchKeyword != ""):
                AllProducts = ProductsDB.query().fetch()
                if (AllProducts != None):
                    for i in range(0, len(AllProducts)):
                        ProdName = AllProducts[i].ProductName.lower()
                        ProdDescription = AllProducts[i].Description.lower()
                        ProdIngredients = AllProducts[i].Ingredients.lower()
                        if (ProdName.find(SearchKeyword.lower()) != -1):
                            ProductIDs.append(AllProducts[i].ProductID)
                        elif (ProdDescription.find(SearchKeyword.lower()) !=
                              -1):
                            ProductIDs.append(AllProducts[i].ProductID)
                        elif (ProdIngredients.find(SearchKeyword.lower()) !=
                              -1):
                            ProductIDs.append(AllProducts[i].ProductID)
            ResponseData['ProductID'] = ProductIDs
            self.response.write(json.dumps(ResponseData))

# Below is code for fetching MyOrdersData for logged in user in android device.
        elif (FunctionOption == "MyOrdersData" and DBConnect != None):
            OrderID = []
            OrderType = []
            OrderStatus = []
            OrderTotal = []
            ActiveOrderDetails = []
            CompletedOrderDetails = []
            OrderDetails = OrdersDB.query(
                OrdersDB.userEmail == userEmail,
                OrdersDB.OrderStatus == "Active").fetch()
            UON1 = []
            UON2 = []
            if (OrderDetails != []):
                for i in range(0, len(OrderDetails)):
                    if (OrderDetails[i].OrderID not in UON1):
                        UON1.append(OrderDetails[i].OrderID)
                for i in range(0, len(UON1)):
                    OrderDetails = OrdersDB.query(
                        OrdersDB.userEmail == userEmail,
                        OrdersDB.OrderStatus == "Active",
                        OrdersDB.OrderID == UON1[i]).fetch()
                    ActiveOrderDetails.append(OrderDetails[0])
                    OrderID.append(ActiveOrderDetails[i].OrderID)
                    OrderType.append(ActiveOrderDetails[i].OrderType)
                    OrderTotal.append(ActiveOrderDetails[i].GrandTotal)
                    if (len(OrderDetails) > 1):
                        for j in range(1, len(OrderDetails)):
                            if (ActiveOrderDetails[i].OrderSubStatus !=
                                    "Reviewing"
                                    and OrderDetails[j].OrderSubStatus
                                    == "Reviewing"):
                                ActiveOrderDetails[
                                    i].OrderSubStatus = OrderDetails[
                                        j].OrderSubStatus
                    OrderStatus.append(ActiveOrderDetails[i].OrderSubStatus)
            OrderDetails = OrdersDB.query(
                OrdersDB.userEmail == userEmail,
                OrdersDB.OrderStatus == "Completed").fetch()
            if (OrderDetails != []):
                for i in range(0, len(OrderDetails)):
                    if (OrderDetails[i].OrderID not in UON1
                            and OrderDetails[i].OrderID not in UON2):
                        UON2.append(OrderDetails[i].OrderID)
                for i in range(0, len(UON2)):
                    OrderDetails = OrdersDB.query(
                        OrdersDB.userEmail == userEmail,
                        OrdersDB.OrderID == UON2[i]).fetch()
                    OrderID.append(OrderDetails[0].OrderID)
                    OrderType.append(OrderDetails[0].OrderType)
                    OrderTotal.append(OrderDetails[0].GrandTotal)
                    if (len(OrderDetails) > 1):
                        OS = OrderDetails[0].OrderStatus
                        OSS = OrderDetails[0].OrderSubStatus
                        for j in range(1, len(OrderDetails)):
                            if (OS != OrderDetails[j].OrderStatus):
                                OS = OrderDetails[j]
                            if (OSS != OrderDetails[j].OrderSubStatus
                                    and OSS != "OrderComplete"):
                                OSS = OrderDetails[j].OrderSubStatus
                            if (OS == "Completed"):
                                CompletedOrderDetails.append(OrderDetails[0])
                                if (OSS != CompletedOrderDetails[
                                        len(CompletedOrderDetails) -
                                        1].OrderSubStatus):
                                    OrderDetails[0].OrderSubStatus = OSS
                    else:
                        if (OrderDetails[0].OrderStatus == "Completed"):
                            CompletedOrderDetails.append(OrderDetails[0])
                    OrderStatus.append(OrderDetails[0].OrderSubStatus)
            ResponseData['OrderID'] = OrderID
            ResponseData['OrderType'] = OrderType
            ResponseData['OrderStatus'] = OrderStatus
            ResponseData['OrderTotal'] = OrderTotal
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "MyOrdersData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for fetching OrdersData for selected OrderID of logged in user in android device.
        elif (FunctionOption == "OrderIDData" and DBConnect != None):
            OrderID = JD["OrderID"]
            ProductID = []
            PharmacyID = []
            ProductStatus = []
            ServiceCharge = 0.0
            DeliveryCharge = 0.0
            ReUploadPrescription = 0
            PaymentRequired = 0
            SubTotalPrice = 0.0

            OrderData = OrdersDB.query(OrdersDB.OrderID == OrderID).fetch()
            if (OrderData != []):
                OrderDetails = OrderData[0]
                DeliveryCharge = DeliveryCharge + OrderData[0].DeliveryCharge
                for i in range(0, len(OrderDetails.ProductID)):
                    PharmacyID.append(
                        OrderData[0].PharmacyID
                    )  # I have got pharmacy id for each product id.
                    ProductStatus.append(
                        OrderData[0].OrderSubStatus
                    )  # I have got individual product status from here.
                    SubTotalPrice = SubTotalPrice + (OrderDetails.Quantity[i] *
                                                     OrderDetails.Price[i])
                    if (OrderData[0].OrderSubStatus == "ReUploadPrescription"):
                        ReUploadPrescription = 1
                        PaymentRequired = 0
                    elif (OrderData[0].OrderSubStatus == "PaymentRequired"):
                        ReUploadPrescription = 0
                        PaymentRequired = 1
                    elif (OrderData[0].OrderSubStatus == "CancelledByVendor"
                          and len(OrderData) > 1):
                        ReUploadPrescription = 0
                        PaymentRequired = 1
                    else:
                        ReUploadPrescription = 0
                        PaymentRequired = 0
                if (len(OrderData) > 1):
                    for i in range(1, len(OrderData)):
                        DeliveryCharge = DeliveryCharge + OrderData[
                            i].DeliveryCharge
                        if (OrderData[i].OrderSubStatus != "CancelledByVendor"
                                and OrderData[i].OrderSubStatus !=
                                "CancelledByCustomer"
                                and OrderDetails.ServiceCharge == 0.0):
                            if (OrderData[i].OrderType != "Collection"):
                                OrderDetails.ServiceCharge = 1.0
                            OrderDetails.OrderTotal = OrderDetails.OrderTotal + OrderData[
                                i].OrderTotal
                        elif (OrderData[i].OrderSubStatus !=
                              "CancelledByVendor"
                              and OrderData[i].OrderSubStatus !=
                              "CancelledByCustomer"
                              and OrderDetails.ServiceCharge != 0.0):
                            OrderDetails.OrderTotal = OrderDetails.OrderTotal + OrderData[
                                i].OrderTotal - OrderData[i].ServiceCharge
                        OrderDetails.DeliveryCharge = OrderDetails.DeliveryCharge + OrderData[
                            i].DeliveryCharge
                        if (OrderDetails.PrescriptionRequired == 0):
                            OrderDetails.PrescriptionRequired = OrderData[
                                i].PrescriptionRequired
                            if (OrderDetails.PrescriptionRequired == 1):
                                OrderDetails.PrescriptionImage = OrderData[
                                    i].PrescriptionImage
                        for j in range(0, len(OrderData[i].ProductID)):
                            PharmacyID.append(OrderData[i].PharmacyID)
                            OrderDetails.ProductID.append(
                                OrderData[i].ProductID[j])
                            OrderDetails.Quantity.append(
                                OrderData[i].Quantity[j])
                            OrderDetails.Price.append(OrderData[i].Price[j])
                            SubTotalPrice = SubTotalPrice + (
                                OrderData[i].Quantity[j] *
                                OrderData[i].Price[j])
                            ProductStatus.append(OrderData[i].OrderSubStatus)
                        if (OrderData[i].OrderSubStatus ==
                                "ReUploadPrescription"):
                            ReUploadPrescription = 1
                            PaymentRequired = 0
                        elif (OrderData[i].OrderSubStatus
                              == "CancelledByVendor" and PaymentRequired == 1):
                            ReUploadPrescription = 0
                            PaymentRequired = 1
                        elif (OrderData[i].OrderSubStatus == "PaymentRequired"
                              and PaymentRequired == 1):
                            ReUploadPrescription = 0
                            PaymentRequired = 1
                        else:
                            PaymentRequired = 0
                ProductID = OrderDetails.ProductID
                ServiceCharge = OrderDetails.ServiceCharge

                ResponseData['OrderID'] = OrderID
                ResponseData['notification'] = "DataFound"
                ResponseData['OrderType'] = OrderDetails.OrderType
                ResponseData['ProductID'] = ProductID
                ResponseData['Quantity'] = OrderDetails.Quantity
                ResponseData['Price'] = OrderDetails.Price
                ResponseData['PharmacyID'] = PharmacyID
                ResponseData['ProductStatus'] = ProductStatus
                ResponseData['ServiceCharge'] = ServiceCharge
                ResponseData['DeliveryCharge'] = DeliveryCharge
                ResponseData[
                    'PrescriptionRequired'] = OrderDetails.PrescriptionRequired
                ResponseData[
                    'PrescriptionImage'] = OrderDetails.PrescriptionImage
                ResponseData['ReUploadPrescription'] = ReUploadPrescription
                ResponseData['PaymentRequired'] = PaymentRequired
                ResponseData['SubTotalPrice'] = SubTotalPrice
            else:
                ResponseData['OrderID'] = OrderID
                ResponseData['notification'] = "NoData"
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "OrderIDData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for fetching data for given pharmacy id.
        elif (FunctionOption == "PharmacyData" and DBConnect != None):
            PharmacyID = JD["PharmacyID"]
            PharmacyData = ndb.Key("PharmacyDB", PharmacyID).get()
            ResponseData['PharmacyID'] = PharmacyData.PharmacyID
            ResponseData['PharmacyName'] = PharmacyData.PharmacyName
            ResponseData['OfficialEmailId'] = PharmacyData.OfficialEmailId
            ResponseData['OfficialContact'] = PharmacyData.OfficialContact
            ResponseData['PhysicalAddress'] = PharmacyData.PhysicalAddress
            ResponseData['Latitude'] = PharmacyData.Latitude
            ResponseData['Longitude'] = PharmacyData.Longitude
            self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "PharmacyData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))

# Below is code for fetching Cart data for logged in user in android device.
        elif (FunctionOption == "FetchCartData" and DBConnect != None):
            CartData = ndb.Key("CartDB", userEmail).get()
            if (CartData != None):
                ResponseData['userEmail'] = userEmail
                ResponseData['notification'] = "ProductsInCart"
                ResponseData['ProductID'] = CartData.ProductID
                ResponseData[
                    'PrescriptionRequired'] = CartData.PrescriptionRequired
                self.response.write(json.dumps(ResponseData))
            else:
                ResponseData['userEmail'] = userEmail
                ResponseData['notification'] = "NoProductsInCart"
                self.response.write(json.dumps(ResponseData))
        elif (FunctionOption == "FetchCartData" and DBConnect == None):
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "UserNotRegistered"
            self.response.write(json.dumps(ResponseData))


# In case no function satisfy conditions, below will be returned.
        else:
            ResponseData['userEmail'] = userEmail
            ResponseData['notification'] = "FunctionNotRecognized"
            self.response.write(json.dumps(ResponseData))
예제 #10
0
    def post(self):
        self.response.headers['content-type'] = 'text/html'

        WebPageLink = "https://medicare-287205.nw.r.appspot.com"
        Button = self.request.get('Button')
        AdminLoggedIn = users.get_current_user()
        AdminEmail = AdminLoggedIn.email()

        if(Button == "RegisterVendorButton"):
            DateTime = datetime.now()
            PharmacyID = DateTime.strftime("%Y%m%d%H%M%S")
            self.response.write(PharmacyID)
            PharmacyName = self.request.get('PharmacyName')
            OfficialEmailId = self.request.get('OfficialEmailId')
            OfficialContact = self.request.get('OfficialContact')
            PhysicalAddress = self.request.get('PhysicalAddress')
            API_Key = "AIzaSyDvLc7SvzpX6KP6HCfn033xNKaM8UH3e2w"
            params = {"address":PhysicalAddress,"key":API_Key}
            GoogleAPI = "https://maps.googleapis.com/maps/api/geocode/json"
            url_params = urlencode(params)
            url = GoogleAPI+"?"+url_params
            result = urlfetch.fetch(url=url,method=urlfetch.POST,headers=params)
            Latitude = json.loads(result.content)['results'][0]['geometry']['location']['lat']
            Longitude = json.loads(result.content)['results'][0]['geometry']['location']['lng']
            EmailVerified = 0
            PharmacyDB_Reference = PharmacyDB.query(PharmacyDB.PharmacyName == PharmacyName and PharmacyDB.PhysicalAddress == PhysicalAddress).get()
            if(PharmacyDB_Reference == None):
                PharmacyDB_Reference = PharmacyDB(id=PharmacyID)
                PharmacyDB_Reference.PharmacyID = PharmacyID
                PharmacyDB_Reference.PharmacyName = PharmacyName
                PharmacyDB_Reference.OfficialEmailId = OfficialEmailId
                PharmacyDB_Reference.OfficialContact = OfficialContact
                PharmacyDB_Reference.PhysicalAddress = PhysicalAddress
                PharmacyDB_Reference.Latitude = Latitude
                PharmacyDB_Reference.Longitude = Longitude
                PharmacyDB_Reference.EmailVerified = EmailVerified
                PharmacyDB_Reference.RegisteredBy = AdminEmail
                PharmacyDB_Reference.IsActive = 1
                PharmacyDB_Reference.put()
                SendEmail(OfficialEmailId,"Confirmation email for vendor registered as : "+PharmacyName+" at MediCare","""
Dear Vendor,

This is an automated email sent to you regarding your MediCare account registration.

You have been registered as : """+PharmacyName+"""
Your Pharmacy Id is """+PharmacyID+"""

Please click on below link to confirm your email id:
"""+WebPageLink+"""/VerifyEmail?RegisteredAs=Vendor&PharmacyID="""+PharmacyID+"""&VerifyStatus="""+hashlib.md5(PhysicalAddress.encode()).hexdigest()+"""

In case above link doesn't work, copy and paste the same in url bar of your browser.

Please Note:
1) You will not be able to register any employee unless your email id has been confirmed using above link.
2) Your pharmacy will not be listed to customers to place order unless this email id is confirmed.

Thanks & regards,
MediCare Team.
            """)
                self.redirect('/AdminPanel?notification=VendorRegistrationSuccessful')
            else:
                self.redirect('/AdminPanel?notification=VendorAlreadyRegistererd')