public async Task <Payment> InsertPaymentMasterAsync(string Id)
        {
            Payment payment;
            //RegistrationViewModel model;
            var registrationMasterData = (await dapperService.GetAllRegistrationDetailsAsync()).FirstOrDefault(f => f.RefNo == Id);

            if (registrationMasterData != null)
            {
                payment = new Payment()
                {
                    UniqueId      = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                    RegPayId      = 0,
                    RefNo         = registrationMasterData.RefNo,
                    OrderId       = registrationMasterData.RefNo.ToString() + DateTime.Now.ToString("ddMMyyyyhhmm"),
                    Fee           = 1200,
                    ServiceCharge = 50,
                    TotalFee      = 1250,
                    PaidStatus    = 0,
                    PaidBy        = "USER",
                    PaidOn        = DateTime.Now
                };

                await dbContext.PaymentMaster.AddAsync(payment);

                var result = await dbContext.SaveChangesAsync();

                return(await GetPaymentMasterByOrderIdAsync(payment.OrderId));
            }

            return(null);
        }
        public async Task <string> InsertRegistrationFormDataAsync(RegistrationViewModel model)
        {
            if (model != null)
            {
                var Course = await dbContext.CourseMaster.FirstOrDefaultAsync(f => f.CourseName == model.CourseName);

                var refNo = await GenerateUniqueRefNo(Course.Id);

                using (var transaction = dbContext.Database.BeginTransaction())
                {
                    try
                    {
                        model.RefNo = refNo;
                        //model.UniqueKey = Guid.NewGuid().ToString().GetHashCode().ToString("x");
                        string[] photoFileExt    = model.PhohoFile.FileInfo.Name.Split('.');
                        string   UniquePhotoName = $"{refNo}P.{photoFileExt[1]}";

                        string[] signatureFileExt    = model.SignatureFile.FileInfo.Name.Split('.');
                        string   UniqueSignatureName = $"{refNo}S.{signatureFileExt[1]}";
                        var      registrationData    = new Registration
                        {
                            UniqueKey                   = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                            UserId                      = model.UserId,
                            Name                        = model.Name,
                            FatherName                  = model.FatherName,
                            MotherName                  = model.MotherName,
                            Dob                         = model.Dob,
                            MobileNo                    = model.MobileNo,
                            EmailAddress                = model.EmailAddress,
                            Gender                      = model.Gender,
                            Year                        = model.Year,
                            ExamCenter                  = model.ExamCenter,
                            CourseName                  = Course.Id,
                            StudentGroup                = model.StudentGroup,
                            MaritalStatus               = model.MaritalStatus,
                            Nationality                 = model.Nationality,
                            IsDomicileOfUttarakhand     = model.IsDomicileOfUttarakhand,
                            Category                    = model.Category,
                            IsFreedomFighter            = model.IsFreedomFighter,
                            IsDefencePersonal           = model.IsDefencePersonal,
                            IsPhysicallyChallenged      = model.IsPhysicallyChallenged,
                            PhysicallyChallengedType    = model.PhysicallyChallengedType,
                            IsPunishedByCourt           = model.IsPunishedByCourt,
                            IsDebarredByUniversity      = model.IsDebarredByUniversity,
                            StateName                   = model.StateName,
                            Address                     = model.Address,
                            City                        = model.City,
                            Pincode                     = model.Pincode,
                            PhotoPath                   = UniquePhotoName,
                            SignaturePath               = UniqueSignatureName,
                            IsEconomicallyWeakerSection = model.IsEconomicallyWeakerSection,
                            RefNo                       = refNo,
                            CreatedBy                   = model.UserId,
                            CreatedTimeStamp            = DateTime.Now,
                            IsAppearing                 = model.IsAppearing,
                            IsKumaunUniversity          = model.IsKumaunUniversity
                        };

                        var allQualifyingType = await dbContext.QualifyingTypeMaster.ToListAsync();

                        List <QualifyingExam> liQualifyingExam = new List <QualifyingExam>();
                        QualifyingType        qualifyingType   = new QualifyingType();
                        if (Course.Id == "B.Ed")
                        {
                            if (!string.IsNullOrEmpty(model.GradutionName))
                            {
                                qualifyingType = allQualifyingType.FirstOrDefault(f => f.QualifyingTypeName == "Graduation");
                                liQualifyingExam.Add(new QualifyingExam
                                {
                                    UniqueId        = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                                    RefNo           = refNo,
                                    CourseName      = Course.Id,
                                    QualifyingType  = qualifyingType.Id.ToString(),
                                    Name            = model.GradutionName,
                                    Stream          = model.GradutionStream,
                                    University      = model.GradutionUniversity,
                                    PassingYear     = model.GradutionPassingYear,
                                    MaxMarks        = model.GradutionMaxMarks,
                                    ObtMarks        = model.GradutionObtMarks,
                                    PercentageMarks = model.GradutionPercentageMarks,
                                    TimeStamp       = DateTime.Now
                                });
                            }

                            if (!string.IsNullOrEmpty(model.PGradutionUniversity))
                            {
                                qualifyingType = allQualifyingType.FirstOrDefault(f => f.QualifyingTypeName == "Post Graduation");
                                liQualifyingExam.Add(new QualifyingExam
                                {
                                    UniqueId        = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                                    RefNo           = refNo,
                                    CourseName      = Course.Id,
                                    QualifyingType  = qualifyingType.Id.ToString(),
                                    Name            = model.PostGradutionName,
                                    Stream          = model.PGradutionStream,
                                    University      = model.PGradutionUniversity,
                                    PassingYear     = model.PGradutionPassingYear,
                                    MaxMarks        = model.PGradutionMaxMarks,
                                    ObtMarks        = model.PGradutionObtMarks,
                                    PercentageMarks = model.PGradutionPercentageMarks,
                                    TimeStamp       = DateTime.Now
                                });
                            }
                        }
                        else
                        {
                            qualifyingType = allQualifyingType.FirstOrDefault(f => f.QualifyingTypeName == "Theory Exam");
                            liQualifyingExam.Add(new QualifyingExam
                            {
                                UniqueId        = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                                RefNo           = refNo,
                                CourseName      = Course.Id,
                                QualifyingType  = qualifyingType.Id.ToString(),
                                Name            = model.TheoryExamName,
                                Stream          = string.Empty,
                                University      = model.M_EdExamUniversity,
                                PassingYear     = model.M_EdExamPassingYear,
                                MaxMarks        = model.TheoryExamMaxMarks,
                                ObtMarks        = model.TheoryExamObtMarks,
                                PercentageMarks = model.M_EdTotalPercentage,    // This Column for this condition (Percentage should be calculate to addition of Both Theory & Practical Exam Marks)
                                TimeStamp       = DateTime.Now
                            });

                            qualifyingType = allQualifyingType.FirstOrDefault(f => f.QualifyingTypeName == "Practical Exam");
                            liQualifyingExam.Add(new QualifyingExam
                            {
                                UniqueId        = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
                                RefNo           = refNo,
                                CourseName      = Course.Id,
                                QualifyingType  = qualifyingType.Id.ToString(),
                                Name            = model.PracticalExamName,
                                Stream          = string.Empty,
                                University      = model.M_EdExamUniversity,
                                PassingYear     = model.M_EdExamPassingYear,
                                MaxMarks        = model.PracticalExamMaxMarks,
                                ObtMarks        = model.PracticalExamObtMarks,
                                PercentageMarks = model.M_EdTotalPercentage,    // This Column for this condition (Percentage should be calculate to addition of Both Theory & Practical Exam Marks)
                                TimeStamp       = DateTime.Now
                            });
                        }

                        await dbContext.RegistrationMaster.AddAsync(registrationData);

                        var result = await dbContext.SaveChangesAsync();

                        if (result > 0)
                        {
                            int counter = 0;
                            foreach (var examDetails in liQualifyingExam)
                            {
                                await dbContext.QualifyingExamMaster.AddAsync(examDetails);

                                var returnData = await dbContext.SaveChangesAsync();

                                if (returnData > 0)
                                {
                                    counter = counter + 1;
                                }
                            }

                            if (counter == liQualifyingExam.Count)
                            {
                                // Upload Phote
                                UploadImageFiles(model.PhohoFile, "Photos", UniquePhotoName);

                                // Upload Signature
                                UploadImageFiles(model.SignatureFile, "Signature", UniqueSignatureName);
                                await transaction.CommitAsync();

                                return("success");
                            }
                        }
                        else
                        {
                            await transaction.RollbackAsync();

                            return("failure");
                        }
                    }
                    catch (Exception ex)
                    {
                        await transaction.RollbackAsync();

                        return("failure");
                        //return ex.Message;
                    }
                }
            }

            return("failure");
        }