예제 #1
0
        /// <summary>
        /// 施設名一覧取得
        /// </summary>
        /// <returns>施設名一覧</returns>
        public List <FacilityNameInfo> GetFacilityNameInfo()
        {
            var facilityNameInfoList = new List <FacilityNameInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 施設id,施設名 from 施設テーブル";
                var    cmd = new NpgsqlCommand(sql, conn);

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    facilityNameInfoList.Add(new FacilityNameInfo(
                                                 (short)dataReader.GetValue(0),
                                                 (string)dataReader.GetValue(1)));
                }
            }

            return(facilityNameInfoList);
        }
예제 #2
0
        /// <summary>
        /// データベースからユーザー情報を取得する
        /// </summary>
        /// <param name="inputID">入力されたユーザーID</param>
        /// <returns>取得したユーザー情報</returns>
        public UserInfo GetUserInfo(string inputID)
        {
            var userInfo = new UserInfo();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select ユーザーid,名前,パスワード,ユーザーマスタ.権限id,権限マスタ.権限名 
                        from ユーザーマスタ inner join 権限マスタ 
                        on ユーザーマスタ.権限id = 権限マスタ.権限id 
                        where ユーザーid = :inputID and 削除フラグ = 0";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("inputID", NpgsqlTypes.NpgsqlDbType.Varchar));
                cmd.Parameters["inputID"].Value = inputID;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    userInfo.UserID        = (string)dataReader.GetValue(0);
                    userInfo.UserName      = (string)dataReader.GetValue(1);
                    userInfo.Pass          = (string)dataReader.GetValue(2);
                    userInfo.AuthorityID   = (int)(decimal)dataReader.GetValue(3);
                    userInfo.AuthorityName = (string)dataReader.GetValue(4);
                }
            }

            return(userInfo);
        }
예제 #3
0
        /// <summary>
        /// 一般ユーザー情報取得
        /// </summary>
        /// <returns>一般ユーザー情報リスト</returns>
        public List <UserInfo> GetGeneralUserInfo()
        {
            var GeneralUserInfoList = new List <UserInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select ユーザーid,名前,パスワード,ユーザーマスタ.権限id,権限マスタ.権限名 
                        from ユーザーマスタ inner join 権限マスタ 
                        on ユーザーマスタ.権限id = 権限マスタ.権限id 
                        where ユーザーマスタ.権限id = 0 and 削除フラグ = 0";

                var cmd = new NpgsqlCommand(sql, conn);

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    GeneralUserInfoList.Add(new UserInfo()
                    {
                        UserID        = (string)dataReader.GetValue(0),
                        UserName      = (string)dataReader.GetValue(1),
                        Pass          = (string)dataReader.GetValue(2),
                        AuthorityID   = (int)(decimal)dataReader.GetValue(3),
                        AuthorityName = (string)dataReader.GetValue(4)
                    });
                }
            }

            return(GeneralUserInfoList);
        }
예제 #4
0
        /// <summary>
        /// 勤務時間情報更新
        /// </summary>
        /// <param name="userID">ログインユーザーのユーザーID</param>
        /// <param name="attendanceTimeInfoList">勤務時間情報リスト</param>
        public void UpdateAttendanceTimeInfo(string userID, List <AttendanceTimeInfo> attendanceTimeInfoList)
        {
            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        //更新する年および月と一致する勤務時間情報を削除
                        string sql = @"delete from 勤怠テーブル 
                            where ユーザーid = :userID and 
                            extract(year from 勤務開始時間) = :year and 
                            extract(month from 勤務開始時間) = :month";

                        var cmd = new NpgsqlCommand(sql, conn);
                        cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                        cmd.Parameters["userID"].Value = userID;
                        cmd.Parameters.Add(new NpgsqlParameter("year", NpgsqlTypes.NpgsqlDbType.Integer));
                        cmd.Parameters["year"].Value = attendanceTimeInfoList[0].StartTime.Year;
                        cmd.Parameters.Add(new NpgsqlParameter("month", NpgsqlTypes.NpgsqlDbType.Integer));
                        cmd.Parameters["month"].Value = attendanceTimeInfoList[0].StartTime.Month;

                        cmd.ExecuteNonQuery();


                        //勤務時間情報をデータベースに追加
                        foreach (var attendanceTime in attendanceTimeInfoList)
                        {
                            sql = @"insert into 勤怠テーブル 
                                values(:userID, :attendanceTime.StartTime, :attendanceTime.EndTime, :attendanceTime.BreakTime)";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["userID"].Value = userID;
                            cmd.Parameters.Add(new NpgsqlParameter("attendanceTime.StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["attendanceTime.StartTime"].Value = attendanceTime.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("attendanceTime.EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["attendanceTime.EndTime"].Value = attendanceTime.EndTime;
                            cmd.Parameters.Add(new NpgsqlParameter("attendanceTime.BreakTime", NpgsqlTypes.NpgsqlDbType.Numeric));
                            cmd.Parameters["attendanceTime.BreakTime"].Value = attendanceTime.BreakTime;

                            cmd.ExecuteNonQuery();
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
예제 #5
0
        /// <summary>
        /// メール送信
        /// </summary>
        /// <param name="userID">ログインユーザーのユーザーID</param>
        /// <param name="mailInfo">送信するメールの情報</param>
        public void SendMail(string userID, List <MailInfo> mailInfoList)
        {
            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        foreach (var mailInfo in mailInfoList)
                        {
                            string sql = @"insert into メールテーブル values (:senderUserID,:receiverUserID,:Subject,:Message)";

                            var cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("senderUserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["senderUserID"].Value = userID;
                            cmd.Parameters.Add(new NpgsqlParameter("receiverUserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["receiverUserID"].Value = mailInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("Subject", NpgsqlTypes.NpgsqlDbType.Text));
                            cmd.Parameters["Subject"].Value = mailInfo.Subject;
                            cmd.Parameters.Add(new NpgsqlParameter("Message", NpgsqlTypes.NpgsqlDbType.Text));
                            cmd.Parameters["Message"].Value = mailInfo.Message;

                            cmd.ExecuteNonQuery();
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
예제 #6
0
        /// <summary>
        /// ユーザー追加
        /// </summary>
        /// <param name="userInfoList">追加するユーザーの情報</param>
        public void InsertUser(List <UserInfo> userInfoList)
        {
            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        foreach (var userInfo in userInfoList)
                        {
                            string sql = @"insert into ユーザーマスタ values (:UserID,:UserName,:Pass,:AuthorityID,0)";

                            var cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = userInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("UserName", NpgsqlTypes.NpgsqlDbType.Text));
                            cmd.Parameters["UserName"].Value = userInfo.UserName;
                            cmd.Parameters.Add(new NpgsqlParameter("Pass", NpgsqlTypes.NpgsqlDbType.Text));
                            cmd.Parameters["Pass"].Value = userInfo.Pass;
                            cmd.Parameters.Add(new NpgsqlParameter("AuthorityID", NpgsqlTypes.NpgsqlDbType.Numeric));
                            cmd.Parameters["AuthorityID"].Value = userInfo.AuthorityID;

                            cmd.ExecuteNonQuery();
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
예제 #7
0
        /// <summary>
        /// データベースから勤務時間情報を取得
        /// </summary>
        /// <param name="userID">ログインユーザーのユーザーID</param>
        /// <param name="attendanceMonth">何月の情報を取得するか</param>
        /// <returns>勤務時間情報リスト</returns>
        public List <AttendanceTimeInfo> GetAttendanceTimeInfo(string userID, AttendanceMonth attendanceMonth)
        {
            var attendanceTimeInfoList = new List <AttendanceTimeInfo>(); //勤務時間情報

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 勤務開始時間,勤務終了時間,休憩時間 
                    from 勤怠テーブル 
                    where ユーザーid = :userID 
                    and extract(year from 勤務開始時間) = :DateTime.Now.Year 
                    and extract(month from 勤務開始時間) = :attendanceMonth 
                    order by 勤務開始時間";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                cmd.Parameters["userID"].Value = userID;
                cmd.Parameters.Add(new NpgsqlParameter("attendanceMonth", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters["attendanceMonth"].Value = (int)attendanceMonth;
                cmd.Parameters.Add(new NpgsqlParameter("DateTime.Now.Year", NpgsqlTypes.NpgsqlDbType.Integer));
                cmd.Parameters["DateTime.Now.Year"].Value = DateTime.Now.Year;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    attendanceTimeInfoList.Add(new AttendanceTimeInfo(
                                                   (DateTime)dataReader.GetValue(0),
                                                   (DateTime)dataReader.GetValue(1),
                                                   (int)(decimal)dataReader.GetValue(2)));
                }
            }

            return(attendanceTimeInfoList);
        }
예제 #8
0
        /// <summary>
        /// ユーザー削除フラグ更新
        /// </summary>
        /// <param name="userID">ユーザーID</param>
        /// <param name="deleteFlag">削除フラグ</param>
        public void UpdateUserDeleteFlag(string userID, int deleteFlag)
        {
            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"update ユーザーマスタ set 削除フラグ = :deleteFlag
                    where ユーザーid = :userID";

                var cmd = new NpgsqlCommand(sql, conn);

                cmd.Parameters.Add(new NpgsqlParameter(":deleteFlag", NpgsqlTypes.NpgsqlDbType.Numeric));
                cmd.Parameters["deleteFlag"].Value = deleteFlag;
                cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                cmd.Parameters["userID"].Value = userID;

                cmd.ExecuteNonQuery();
            }
        }
예제 #9
0
        /// <summary>
        /// ログインユーザーが送信したメールを取得
        /// </summary>
        /// <param name="userID">ログインユーザーのユーザーID</param>
        /// <returns>メール情報</returns>
        public List <MailInfo> GetTransmittedMail(string userID)
        {
            var mailInfoList = new List <MailInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 受信者ユーザーid,名前,件名,メッセージ,メールテーブル.更新日時
                    from メールテーブル inner join ユーザーマスタ
                    on メールテーブル.受信者ユーザーid = ユーザーマスタ.ユーザーid
                    where 送信者ユーザーid = :userID";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                cmd.Parameters["userID"].Value = userID;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    mailInfoList.Add(new MailInfo()
                    {
                        UserID    = (string)dataReader.GetValue(0),
                        UserName  = (string)dataReader.GetValue(1),
                        Subject   = (string)dataReader.GetValue(2),
                        Message   = (string)dataReader.GetValue(3),
                        AddedDate = (DateTime)dataReader.GetValue(4)
                    });
                }
            }

            return(mailInfoList);
        }
예제 #10
0
        /// <summary>
        /// 全ユーザーの1週間分の予定を取得
        /// </summary>
        /// <param name="firstDate">取得する予定のうち、最初の日付</param>
        /// <param name="lastDate">取得する予定のうち、最後の日付</param>
        /// <returns>予定リスト</returns>
        public List <ScheduleInfo> GetScheduleInfo(DateTime firstDate, DateTime lastDate)
        {
            var scheduleInfoList = new List <ScheduleInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 予定id,ユーザーid,予定内容,開始日時,終了日時 from 予定テーブル 
                    where exists (select 1 from ユーザーマスタ where 予定テーブル.ユーザーid = ユーザーマスタ.ユーザーid and 削除フラグ = 0)
                    and cast(開始日時 as date) >= :firstDate.Date 
                    and cast(開始日時 as date) <= :lastDate.Date";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("firstDate.Date", NpgsqlTypes.NpgsqlDbType.Timestamp));
                cmd.Parameters["firstDate.Date"].Value = firstDate.Date;
                cmd.Parameters.Add(new NpgsqlParameter("lastDate.Date", NpgsqlTypes.NpgsqlDbType.Timestamp));
                cmd.Parameters["lastDate.Date"].Value = lastDate.Date;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    scheduleInfoList.Add(new ScheduleInfo(
                                             (short)dataReader.GetValue(0),
                                             (string)dataReader.GetValue(1),
                                             (string)dataReader.GetValue(2),
                                             (DateTime)dataReader.GetValue(3),
                                             (DateTime)dataReader.GetValue(4)));
                }
            }

            return(scheduleInfoList);
        }
예제 #11
0
        /// <summary>
        /// ログインユーザーの登録済みの予定一覧を、本日以降の予定のもののみ取得する
        /// </summary>
        /// <param name="userID">ログインユーザーのユーザーID</param>
        /// <returns>登録済みの予定一覧</returns>
        public List <ScheduleInfo> GetRegisteredSchedule(string userID)
        {
            var registeredScheduleList = new List <ScheduleInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 予定id, ユーザーid, 予定内容, 開始日時, 終了日時 from 予定テーブル
                    where ユーザーid = :userID 
                    and cast(開始日時 as date) >= :DateTime.Now.Date";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("userID", NpgsqlTypes.NpgsqlDbType.Varchar));
                cmd.Parameters["userID"].Value = userID;
                cmd.Parameters.Add(new NpgsqlParameter("DateTime.Now.Date", NpgsqlTypes.NpgsqlDbType.Timestamp));
                cmd.Parameters["DateTime.Now.Date"].Value = DateTime.Now.Date;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    registeredScheduleList.Add(new ScheduleInfo(
                                                   (short)dataReader.GetValue(0),
                                                   (string)dataReader.GetValue(1),
                                                   (string)dataReader.GetValue(2),
                                                   (DateTime)dataReader.GetValue(3),
                                                   (DateTime)dataReader.GetValue(4)));
                }
            }

            return(registeredScheduleList);
        }
예제 #12
0
        /// <summary>
        /// 施設利用情報取得
        /// </summary>
        /// <param name="firstDate">取得する施設利用情報のうち、最初の日付</param>
        /// <param name="lastDate">取得する施設利用情報のうち、最後の日付</param>
        /// <returns>施設利用情報リスト</returns>
        public List <FacilityUsageInfo> GetFacilityUsageInfo(DateTime firstDate, DateTime lastDate)
        {
            var facilityUsageInfoList = new List <FacilityUsageInfo>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select 施設id,開始日時,終了日時 
                    from 施設利用状況テーブル inner join 予定テーブル
                    on 施設利用状況テーブル.予定id = 予定テーブル.予定id
                    where cast(開始日時 as date) >= :firstDate.Date 
                    and cast(開始日時 as date) <= :lastDate.Date";

                var cmd = new NpgsqlCommand(sql, conn);
                cmd.Parameters.Add(new NpgsqlParameter("firstDate.Date", NpgsqlTypes.NpgsqlDbType.Timestamp));
                cmd.Parameters["firstDate.Date"].Value = firstDate.Date;
                cmd.Parameters.Add(new NpgsqlParameter("lastDate.Date", NpgsqlTypes.NpgsqlDbType.Timestamp));
                cmd.Parameters["lastDate.Date"].Value = lastDate.Date;

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    facilityUsageInfoList.Add(new FacilityUsageInfo(
                                                  (short)dataReader.GetValue(0),
                                                  (DateTime)dataReader.GetValue(1),
                                                  (DateTime)dataReader.GetValue(2)));
                }
            }

            return(facilityUsageInfoList);
        }
예제 #13
0
        /// <summary>
        /// 予定の種類の一覧を取得
        /// </summary>
        /// <returns>予定一覧</returns>
        public List <string> GetScheduleType()
        {
            var scheduleTypeList = new List <string>();

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                string sql = @"select distinct 予定内容 from 予定テーブル";
                var    cmd = new NpgsqlCommand(sql, conn);

                var dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    scheduleTypeList.Add((string)dataReader.GetValue(0));
                }
            }

            return(scheduleTypeList);
        }
예제 #14
0
        /// <summary>
        /// 予定更新
        /// </summary>
        /// <param name="scheduleRegistrationInfo">予定登録情報</param>
        /// <param name="scheduleUpdateType">更新種別</param>
        public void UpdateSchedule(ScheduleRegistrationInfo scheduleRegistrationInfo, ScheduleUpdateType scheduleUpdateType)
        {
            string sql; //実行するsql文

            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                //トランザクション開始
                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        switch (scheduleUpdateType)
                        {
                        //新規予定追加の場合
                        case ScheduleUpdateType.Add:

                            //予定情報を予定テーブルに追加
                            sql = @"insert into 予定テーブル(ユーザーid, 予定内容, 開始日時, 終了日時)
                                values(:UserID, :ScheduleContents, :StartTime, :EndTime)";

                            var cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleContents", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["ScheduleContents"].Value = scheduleRegistrationInfo.ScheduleContents;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();


                            //施設利用情報を施設利用状況テーブルに追加
                            sql = @"insert into 施設利用状況テーブル select 
                                    :UserID, 
                                    :FacilityID,    
                                    予定id from 予定テーブル where 
                                        ユーザーid = :UserID and
                                        開始日時 = :StartTime and
                                        終了日時 = :EndTime";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("FacilityID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["FacilityID"].Value = scheduleRegistrationInfo.FacilityID;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();

                            break;


                        //予定編集の場合
                        case ScheduleUpdateType.Edit:

                            //編集前のデータを予定テーブルから削除
                            sql = @"delete from 予定テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //編集前のデータを施設利用状況テーブルテーブルから削除
                            sql = @"delete from 施設利用状況テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //編集後のデータを予定テーブルに追加
                            sql = @"insert into 予定テーブル(ユーザーid, 予定内容, 開始日時, 終了日時)
                                values(:UserID, :ScheduleContents, :StartTime, :EndTime)";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleContents", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["ScheduleContents"].Value = scheduleRegistrationInfo.ScheduleContents;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();


                            //編集後のデータを施設利用状況テーブルに追加
                            sql = @"insert into 施設利用状況テーブル select 
                                    :UserID, 
                                    :FacilityID,    
                                    予定id from 予定テーブル where 
                                        ユーザーid = :UserID and
                                        開始日時 = :StartTime and
                                        終了日時 = :EndTime";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                            cmd.Parameters["UserID"].Value = scheduleRegistrationInfo.UserID;
                            cmd.Parameters.Add(new NpgsqlParameter("FacilityID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["FacilityID"].Value = scheduleRegistrationInfo.FacilityID;
                            cmd.Parameters.Add(new NpgsqlParameter("StartTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["StartTime"].Value = scheduleRegistrationInfo.StartTime;
                            cmd.Parameters.Add(new NpgsqlParameter("EndTime", NpgsqlTypes.NpgsqlDbType.Timestamp));
                            cmd.Parameters["EndTime"].Value = scheduleRegistrationInfo.EndTime;

                            cmd.ExecuteNonQuery();

                            break;


                        //予定削除の場合
                        case ScheduleUpdateType.Delete:
                            //データを予定テーブルから削除
                            sql = @"delete from 予定テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();


                            //データを施設利用状況テーブルテーブルから削除
                            sql = @"delete from 施設利用状況テーブル where 予定id = :ScheduleID";

                            cmd = new NpgsqlCommand(sql, conn);
                            cmd.Parameters.Add(new NpgsqlParameter("ScheduleID", NpgsqlTypes.NpgsqlDbType.Smallint));
                            cmd.Parameters["ScheduleID"].Value = scheduleRegistrationInfo.ScheduleID;

                            cmd.ExecuteNonQuery();
                            break;
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
예제 #15
0
        /// <summary>
        /// ユーザー情報更新
        /// </summary>
        /// <param name="userInfoList">ユーザー情報</param>
        public void UpdateUserInfo(List <UserInfo> userInfoList)
        {
            //データベースに接続するための文字列を取得
            string connString = new CommonDBAccess().MakeAccessString();

            using (var conn = new NpgsqlConnection(connString))
            {
                conn.Open();

                using (var transaction = conn.BeginTransaction())
                {
                    try
                    {
                        foreach (var userInfo in userInfoList)
                        {
                            //パスワードを更新しない場合
                            if (userInfo.Pass == "")
                            {
                                string sql = @"update ユーザーマスタ set 名前 = :UserName, 権限id = :AuthorityID
                                    where ユーザーid = :UserID";

                                var cmd = new NpgsqlCommand(sql, conn);
                                cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                                cmd.Parameters["UserID"].Value = userInfo.UserID;
                                cmd.Parameters.Add(new NpgsqlParameter("UserName", NpgsqlTypes.NpgsqlDbType.Varchar));
                                cmd.Parameters["UserName"].Value = userInfo.UserName;
                                cmd.Parameters.Add(new NpgsqlParameter("AuthorityID", NpgsqlTypes.NpgsqlDbType.Numeric));
                                cmd.Parameters["AuthorityID"].Value = userInfo.AuthorityID;

                                cmd.ExecuteNonQuery();
                            }
                            //パスワードを更新する場合
                            else
                            {
                                string sql = @"update ユーザーマスタ set 名前 = :UserName, 権限id = :AuthorityID, パスワード = :Pass
                                    where ユーザーid = :UserID";

                                var cmd = new NpgsqlCommand(sql, conn);
                                cmd.Parameters.Add(new NpgsqlParameter("UserID", NpgsqlTypes.NpgsqlDbType.Varchar));
                                cmd.Parameters["UserID"].Value = userInfo.UserID;
                                cmd.Parameters.Add(new NpgsqlParameter("UserName", NpgsqlTypes.NpgsqlDbType.Text));
                                cmd.Parameters["UserName"].Value = userInfo.UserName;
                                cmd.Parameters.Add(new NpgsqlParameter("AuthorityID", NpgsqlTypes.NpgsqlDbType.Numeric));
                                cmd.Parameters["AuthorityID"].Value = userInfo.AuthorityID;
                                cmd.Parameters.Add(new NpgsqlParameter("Pass", NpgsqlTypes.NpgsqlDbType.Text));
                                cmd.Parameters["Pass"].Value = userInfo.Pass;

                                cmd.ExecuteNonQuery();
                            }
                        }

                        transaction.Commit();
                    }
                    catch (NpgsqlException)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }