Commit 8380e2e59dacef7667d8af92c9a0603941c348e6
1 parent
788cc440
added sql scripts
added logs
Showing
3 changed files
with
164 additions
and
43 deletions
150-DOCUMENTATION/002-DBScripts/CreateLabExerciseTempTableType.sql
0 → 100644
150-DOCUMENTATION/002-DBScripts/usp_SaveLabExerciseAttempts.sql
0 → 100644
1 | +USE [AIADatabaseV5] | |
2 | +GO | |
3 | +/****** Object: StoredProcedure [dbo].[usp_SaveLabExerciseAttempts] Script Date: 2/23/2018 7:07:38 PM ******/ | |
4 | +SET ANSI_NULLS ON | |
5 | +GO | |
6 | +SET QUOTED_IDENTIFIER ON | |
7 | +GO | |
8 | + | |
9 | +-- ==================================================== | |
10 | +-- Author: Nikita Kulshreshtha | |
11 | +-- Create date: 21-Feb-2018 | |
12 | +-- Description: To insert a LabExerciseData | |
13 | +-- ==================================================== | |
14 | +CREATE PROCEDURE [dbo].[usp_SaveLabExerciseAttempts] | |
15 | + -- Add the parameters for the stored procedure here | |
16 | + | |
17 | + @UserId int, | |
18 | + @LabExerciseIdentifier nchar(10), | |
19 | + @LastQuestion int, | |
20 | + @TotalQuestions int, | |
21 | + @LabExerciseTempTbl LabExerciseTempTableType READONLY | |
22 | + | |
23 | + | |
24 | +AS | |
25 | +BEGIN | |
26 | + -- SET NOCOUNT ON added to prevent extra result sets from | |
27 | + -- interfering with SELECT statements. | |
28 | + SET NOCOUNT ON; | |
29 | + | |
30 | + BEGIN TRY | |
31 | + BEGIN TRANSACTION | |
32 | + DECLARE @labQuizId int; | |
33 | + DECLARE @count int; | |
34 | + DECLARE @Score int; | |
35 | + DECLARE @MaxScore int; | |
36 | + DECLARE @UserAnswers nvarchar(2000); | |
37 | + DECLARE @QuestionNo int; | |
38 | + DECLARE @CorrectAnswers nvarchar(2000); | |
39 | + DECLARE @DragItems nvarchar(max) | |
40 | + DECLARE @c int | |
41 | + | |
42 | + INSERT INTO LabExercise(UserId, LabExerciseIdentifier,IsActive, LastQuestion,TotalQuestions,SavedDate, ModifiedDate) | |
43 | + values(@UserId, @LabExerciseIdentifier, 1, @LastQuestion, @TotalQuestions,GETDATE(),GETDATE()) | |
44 | + print 'inserted in 1st table' | |
45 | + SELECT @labQuizId = max(Id) from LabExercise where LabExerciseIdentifier = @LabExerciseIdentifier and UserId= @UserId | |
46 | + print @labQuizId | |
47 | +-- --check count before update | |
48 | +SELECT @count = count(*) FROM LabExercise where LabExerciseIdentifier = @LabExerciseIdentifier and UserId= @UserId and Id!=@labQuizId | |
49 | +print @count | |
50 | + if(@count>0) | |
51 | + BEGIN | |
52 | + print N'inside if' | |
53 | + UPDATE LabExercise set IsActive = 0 where LabExerciseIdentifier = @LabExerciseIdentifier and UserId= @UserId and Id!=@labQuizId | |
54 | + | |
55 | +----create temp table | |
56 | +create table #Temp | |
57 | +( | |
58 | + MaxScore int, | |
59 | + UserAnswers NVarchar(2000), | |
60 | + QuestionNo int, | |
61 | + CorrectAnswers NVarchar(2000), | |
62 | + DragItems NVarchar(2000), | |
63 | + Score int | |
64 | +) | |
65 | +select * from @LabExerciseTempTbl | |
66 | +insert into #Temp(MaxScore,UserAnswers,QuestionNo,CorrectAnswers,DragItems,Score) | |
67 | +select MaxScore,UserAnswers,QuestionNo,CorrectAnswers,DragItems,Score from @LabExerciseTempTbl | |
68 | +select @c = count(*) from #Temp | |
69 | +print @c | |
70 | +print 'inserted in temp table' | |
71 | + DECLARE LABEX_CURSOR CURSOR | |
72 | + LOCAL FORWARD_ONLY FOR | |
73 | + SELECT MaxScore, UserAnswers,QuestionNo, CorrectAnswers, DragItems,Score FROM #Temp | |
74 | + print 'cursor declared' | |
75 | + OPEN LABEX_CURSOR | |
76 | + print 'cursor open' | |
77 | + FETCH NEXT FROM LABEX_CURSOR INTO @MaxScore, @UserAnswers, @QuestionNo, @CorrectAnswers, @DragItems,@Score | |
78 | + WHILE @@FETCH_STATUS = 0 | |
79 | + BEGIN | |
80 | + print 'inside cursor' | |
81 | + INSERT INTO LabExerciseDetails(LabQuizId,StateObject,Score,MaxScore,UserAnswers,QuestionNo,CorrectAnswers,DragItems) values(@labQuizId,null,@Score,@MaxScore,@UserAnswers,@QuestionNo,@CorrectAnswers,@DragItems) | |
82 | + FETCH NEXT FROM LABEX_CURSOR INTO @MaxScore, @UserAnswers, @QuestionNo, @CorrectAnswers, @DragItems,@Score | |
83 | + print 'end cursor' | |
84 | + END | |
85 | + CLOSE LABEX_CURSOR | |
86 | + DEALLOCATE LABEX_CURSOR | |
87 | + END | |
88 | + COMMIT TRANSACTION | |
89 | + | |
90 | + END TRY | |
91 | + BEGIN CATCH | |
92 | + IF @@TRANCOUNT > 0 | |
93 | + ROLLBACK TRANSACTION | |
94 | + END CATCH | |
95 | + | |
96 | +END | |
97 | + | ... | ... |
400-SOURCECODE/AIAHTML5.API/Models/DBModel.cs
... | ... | @@ -902,62 +902,77 @@ namespace AIAHTML5.API.Models |
902 | 902 | { |
903 | 903 | |
904 | 904 | |
905 | - logger.Debug(" Inside GetUserDetailsByEmailId for userId = " + userId + "and labIdentifier= " + labIdentifier); | |
905 | + logger.Debug(" Inside GetLabExercise for userId = " + userId + "and labIdentifier= " + labIdentifier); | |
906 | + SqlConnection conn = null; | |
907 | + try | |
908 | + { | |
909 | + LabExercise le = new LabExercise(); | |
910 | + le.labExercise = new List<LabEcerciseDetails>(); | |
911 | + DBModel objModel = new DBModel(); | |
906 | 912 | |
907 | - LabExercise le = new LabExercise(); | |
908 | - le.labExercise = new List<LabEcerciseDetails>(); | |
909 | - DBModel objModel = new DBModel(); | |
913 | + conn = new SqlConnection(dbConnectionString); | |
914 | + SqlCommand cmd = new SqlCommand(); | |
915 | + SqlDataAdapter adapter; | |
916 | + SqlParameter param; | |
917 | + DataSet ds = new DataSet(); | |
910 | 918 | |
911 | - SqlConnection conn = new SqlConnection(dbConnectionString); | |
912 | - SqlCommand cmd = new SqlCommand(); | |
913 | - SqlDataAdapter adapter; | |
914 | - SqlParameter param; | |
915 | - DataSet ds = new DataSet(); | |
919 | + cmd.Connection = conn; | |
920 | + cmd.CommandText = DBConstants.GET_LAB_EXERCISE; | |
921 | + cmd.CommandType = CommandType.StoredProcedure; | |
916 | 922 | |
917 | - cmd.Connection = conn; | |
918 | - cmd.CommandText = DBConstants.GET_LAB_EXERCISE; | |
919 | - cmd.CommandType = CommandType.StoredProcedure; | |
920 | - | |
921 | - //cmd.Parameters.AddWithValue("@UserId", userId); | |
922 | - //cmd.Parameters.AddWithValue("@Identifier", labIdentifier); | |
923 | - cmd.Parameters.Add("@UserId", SqlDbType.Int).Value = userId; | |
924 | - cmd.Parameters.Add("@Identifier", SqlDbType.NVarChar).Value = labIdentifier; | |
923 | + //cmd.Parameters.AddWithValue("@UserId", userId); | |
924 | + //cmd.Parameters.AddWithValue("@Identifier", labIdentifier); | |
925 | + cmd.Parameters.Add("@UserId", SqlDbType.Int).Value = userId; | |
926 | + cmd.Parameters.Add("@Identifier", SqlDbType.NVarChar).Value = labIdentifier; | |
925 | 927 | |
926 | 928 | |
927 | - adapter = new SqlDataAdapter(cmd); | |
928 | - adapter.Fill(ds); | |
929 | + adapter = new SqlDataAdapter(cmd); | |
930 | + adapter.Fill(ds); | |
929 | 931 | |
932 | + logger.Debug("dataset is filled"); | |
930 | 933 | |
931 | - if (ds != null && ds.Tables.Count > 0) | |
932 | - { | |
933 | - DataTable dt = ds.Tables[0]; | |
934 | - | |
935 | - if (dt.Rows.Count > 0) | |
934 | + if (ds != null && ds.Tables.Count > 0) | |
936 | 935 | { |
937 | - foreach (DataRow dr in dt.Rows) | |
936 | + logger.Debug("ds.Tables.Count= " + ds.Tables.Count); | |
937 | + DataTable dt = ds.Tables[0]; | |
938 | + | |
939 | + if (dt.Rows.Count > 0) | |
938 | 940 | { |
939 | - le.userId = Convert.ToInt32(dr["UserId"]); | |
940 | - le.labExerciseIdentifier = dr["labExerciseIdentifier"].ToString(); | |
941 | - | |
942 | - le.lastQuestion = Convert.ToInt32(dr["LastQuestion"]); | |
943 | - le.totalQuestions = Convert.ToInt32(dr["TotalQuestions"]); | |
944 | - | |
945 | - LabEcerciseDetails led = new LabEcerciseDetails(); | |
946 | - // led.StateObject = dr["StateObject"].ToString(); | |
947 | - led.UserAnswers = dr["UserAnswers"].ToString(); | |
948 | - led.Score = Convert.ToInt32(dr["Score"]); | |
949 | - led.MaxScore = Convert.ToInt32(dr["MaxScore"]); | |
950 | - led.QuestionNo = Convert.ToInt32(dr["QuestionNo"]); | |
951 | - led.CorrectAnswers = dr["CorrectAnswers"].ToString(); | |
952 | - led.DragItems = dr["DragItems"].ToString(); | |
953 | - le.labExercise.Add(led); | |
941 | + logger.Debug("dt.Rows.Count= " + dt.Rows.Count); | |
942 | + foreach (DataRow dr in dt.Rows) | |
943 | + { | |
944 | + le.userId = Convert.ToInt32(dr["UserId"]); | |
945 | + le.labExerciseIdentifier = dr["labExerciseIdentifier"].ToString(); | |
946 | + | |
947 | + le.lastQuestion = Convert.ToInt32(dr["LastQuestion"]); | |
948 | + le.totalQuestions = Convert.ToInt32(dr["TotalQuestions"]); | |
949 | + | |
950 | + LabEcerciseDetails led = new LabEcerciseDetails(); | |
951 | + // led.StateObject = dr["StateObject"].ToString(); | |
952 | + led.UserAnswers = dr["UserAnswers"].ToString(); | |
953 | + led.Score = Convert.ToInt32(dr["Score"]); | |
954 | + led.MaxScore = Convert.ToInt32(dr["MaxScore"]); | |
955 | + led.QuestionNo = Convert.ToInt32(dr["QuestionNo"]); | |
956 | + led.CorrectAnswers = dr["CorrectAnswers"].ToString(); | |
957 | + led.DragItems = dr["DragItems"].ToString(); | |
958 | + le.labExercise.Add(led); | |
959 | + } | |
954 | 960 | } |
955 | 961 | } |
956 | - } | |
957 | 962 | |
958 | - return le; | |
963 | + return le; | |
964 | + } | |
959 | 965 | |
960 | - | |
966 | + catch (SqlException ex) | |
967 | + { | |
968 | + logger.Fatal("Exception in GetLabExercise for userId= " + userId + ", labExerciseIdentifier= " + labIdentifier); | |
969 | + throw; | |
970 | + } | |
971 | + finally | |
972 | + { | |
973 | + conn.Dispose(); | |
974 | + } | |
975 | + | |
961 | 976 | |
962 | 977 | } |
963 | 978 | //internal int InsertLabExerciseDetails(int userId, string labExerciseIdentifier, int lastQusetion, int totalQuestions, List<> labExDetails ) | ... | ... |