Exemplo n.º 1
0
        public async Task <IActionResult> Clean()
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            _context.ExceptionRecords.RemoveRange(_context.ExceptionRecords.ToList());
            await _context.SaveChangesAsync();

            apiResult = APIResultFactory.Build(true, StatusCodes.Status200OK,
                                               ErrorMessageEnum.None);
            return(Ok(apiResult));
        }
        public async Task <IActionResult> PostNotificationToken([FromBody] NotificationTokenRequestDTO notificationToken)
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            NotificationToken NotificationToken = new NotificationToken()
            {
                OSType           = (OSType)Enum.Parse(typeof(OSType), notificationToken.OSType.ToString()),
                RegistrationTime = notificationToken.RegistrationTime,
                Token            = notificationToken.Token,
                User             = fooUser,
            };

            _context.NotificationTokens.Add(NotificationToken);
            await _context.SaveChangesAsync();

            NotificationTokenResponseDTO NotificationTokenResponseDTO = new NotificationTokenResponseDTO()
            {
                OSType           = notificationToken.OSType,
                RegistrationTime = notificationToken.RegistrationTime,
                Token            = notificationToken.Token,
                User             = new UserDTO()
                {
                    Id = fooUser.Id
                },
            };

            apiResult = APIResultFactory.Build(true, StatusCodes.Status200OK,
                                               ErrorMessageEnum.None, payload: NotificationTokenResponseDTO);
            return(Ok(apiResult));
        }
Exemplo n.º 3
0
 private async Task CleanDB()
 {
     lobDatabaseContext.InvoiceDetails.RemoveRange(lobDatabaseContext.InvoiceDetails);
     lobDatabaseContext.Invoices.RemoveRange(lobDatabaseContext.Invoices);
     lobDatabaseContext.SystemEnvironment.RemoveRange(lobDatabaseContext.SystemEnvironment);
     lobDatabaseContext.Suggestions.RemoveRange(lobDatabaseContext.Suggestions);
     lobDatabaseContext.ExceptionRecords.RemoveRange(lobDatabaseContext.ExceptionRecords);
     lobDatabaseContext.NotificationTokens.RemoveRange(lobDatabaseContext.NotificationTokens);
     lobDatabaseContext.LeaveForms.RemoveRange(lobDatabaseContext.LeaveForms);
     lobDatabaseContext.LeaveFormTypes.RemoveRange(lobDatabaseContext.LeaveFormTypes);
     lobDatabaseContext.CommUserGroupItems.RemoveRange(lobDatabaseContext.CommUserGroupItems);
     lobDatabaseContext.CommUserGroups.RemoveRange(lobDatabaseContext.CommUserGroups);
     lobDatabaseContext.LobUsers.RemoveRange(lobDatabaseContext.LobUsers);
     lobDatabaseContext.Departments.RemoveRange(lobDatabaseContext.Departments);
     await lobDatabaseContext.SaveChangesAsync();
 }
Exemplo n.º 4
0
        public async Task <IActionResult> PutLeaveForm([FromRoute] int id, [FromBody] LeaveFormRequestDTO leaveForm)
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            if (!ModelState.IsValid)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.傳送過來的資料有問題, exceptionMessage: $"傳送過來的資料有問題 {ModelState}");
                return(BadRequest(apiResult));
            }

            if (leaveForm.id != id)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.紀錄更新所指定ID不一致);
                return(BadRequest(apiResult));
            }

            var fooLeaveFormType = await _context.LeaveFormTypes.FindAsync(leaveForm.leaveFormType.Id);

            if (fooLeaveFormType == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的請假單類別);
                return(NotFound(apiResult));
            }

            var leaveFormOnDB = await _context.LeaveForms.Include(x => x.LeaveFormType)
                                .Include(x => x.User).ThenInclude(x => x.Department)
                                .FirstOrDefaultAsync(x => x.Id == leaveForm.id);

            if (leaveFormOnDB == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的請假單);
                return(NotFound(apiResult));
            }
            else if (leaveFormOnDB.User.Id != UserID)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖Token上標示的使用者與傳送過來的使用者不一致);
                return(BadRequest(apiResult));
            }

            leaveFormOnDB.BeginTime             = leaveForm.BeginTime;
            leaveFormOnDB.Description           = leaveForm.Description;
            leaveFormOnDB.EndTime               = leaveForm.EndTime;
            leaveFormOnDB.TotalHours            = leaveForm.TotalHours;
            leaveFormOnDB.LeaveFormType         = fooLeaveFormType;
            _context.Entry(leaveFormOnDB).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!await LeaveFormExists(leaveForm.id))
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上);
                    return(Conflict(apiResult));
                }
                else
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.紀錄更新時_發生同時存取衝突);
                    return(Conflict(apiResult));
                }
            }
            catch (Exception ex)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status500InternalServerError,
                                                   Helpers.ErrorMessageEnum.Exception,
                                                   exceptionMessage: $"({ex.GetType().Name}), {ex.Message}{Environment.NewLine}{ex.StackTrace}");
                return(StatusCode(StatusCodes.Status500InternalServerError, apiResult));
            }

            apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted,
                                               ErrorMessageEnum.None, payload: leaveForm);
            return(Accepted(apiResult));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] InvoiceDetailRequestDTO invoiceDetailRequestDTO)
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            if (!ModelState.IsValid)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.傳送過來的資料有問題, exceptionMessage: $"傳送過來的資料有問題 {ModelState}");
                return(BadRequest(apiResult));
            }

            if (invoiceDetailRequestDTO.Id != id)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.紀錄更新所指定ID不一致);
                return(BadRequest(apiResult));
            }

            var invoiceOnDB = await _context.Invoices
                              .FirstOrDefaultAsync(x => x.Id == invoiceDetailRequestDTO.Invoice.Id);

            if (invoiceOnDB == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的發票);
                return(NotFound(apiResult));
            }

            var invoiceDetailOnDB = await _context.InvoiceDetails
                                    .Include(x => x.Invoice)
                                    .FirstOrDefaultAsync(x => x.Id == invoiceDetailRequestDTO.Id);

            if (invoiceDetailOnDB == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的發票明細項目);
                return(NotFound(apiResult));
            }

            invoiceDetailOnDB.Cnt             = invoiceDetailRequestDTO.Cnt;
            invoiceDetailOnDB.Flag            = invoiceDetailRequestDTO.Flag;
            invoiceDetailOnDB.Memo            = invoiceDetailRequestDTO.Memo;
            invoiceDetailOnDB.PictureName     = invoiceDetailRequestDTO.PictureName;
            invoiceDetailOnDB.Price           = invoiceDetailRequestDTO.Price;
            invoiceDetailOnDB.Qty             = invoiceDetailRequestDTO.Qty;
            invoiceDetailOnDB.SubTotal        = invoiceDetailRequestDTO.SubTotal;
            invoiceDetailOnDB.TDate           = invoiceDetailRequestDTO.TDate;
            _context.Entry(invoiceOnDB).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!await InvoiceDetailExists(invoiceDetailRequestDTO.Id))
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上);
                    return(Conflict(apiResult));
                }
                else
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.紀錄更新時_發生同時存取衝突);
                    return(Conflict(apiResult));
                }
            }
            catch (Exception ex)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status500InternalServerError,
                                                   Helpers.ErrorMessageEnum.Exception,
                                                   exceptionMessage: $"({ex.GetType().Name}), {ex.Message}{Environment.NewLine}{ex.StackTrace}");
                return(StatusCode(StatusCodes.Status500InternalServerError, apiResult));
            }

            apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted,
                                               ErrorMessageEnum.None, payload: invoiceDetailRequestDTO);
            return(Accepted(apiResult));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Put([FromRoute] int id, [FromBody] InvoiceRequestDTO invoiceRequestDTO)
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            if (!ModelState.IsValid)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.傳送過來的資料有問題, exceptionMessage: $"傳送過來的資料有問題 {ModelState}");
                return(BadRequest(apiResult));
            }

            if (invoiceRequestDTO.Id != id)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.紀錄更新所指定ID不一致);
                return(BadRequest(apiResult));
            }

            var invoiceOnDB = await _context.Invoices
                              .Include(x => x.User).ThenInclude(x => x.Department)
                              .FirstOrDefaultAsync(x => x.Id == invoiceRequestDTO.Id);

            if (invoiceOnDB == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的發票);
                return(NotFound(apiResult));
            }
            else if (invoiceOnDB.User.Id != UserID)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖Token上標示的使用者與傳送過來的使用者不一致);
                return(BadRequest(apiResult));
            }

            invoiceOnDB.InvoiceNo             = invoiceRequestDTO.InvoiceNo;
            invoiceOnDB.Date                  = invoiceRequestDTO.Date;
            invoiceOnDB.Memo                  = invoiceRequestDTO.Memo;
            _context.Entry(invoiceOnDB).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!await InvoiceExists(invoiceRequestDTO.Id))
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上);
                    return(Conflict(apiResult));
                }
                else
                {
                    apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict,
                                                       ErrorMessageEnum.紀錄更新時_發生同時存取衝突);
                    return(Conflict(apiResult));
                }
            }
            catch (Exception ex)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status500InternalServerError,
                                                   Helpers.ErrorMessageEnum.Exception,
                                                   exceptionMessage: $"({ex.GetType().Name}), {ex.Message}{Environment.NewLine}{ex.StackTrace}");
                return(StatusCode(StatusCodes.Status500InternalServerError, apiResult));
            }

            var fooItem = await _context.Invoices.FirstOrDefaultAsync(x => x.Id == invoiceRequestDTO.Id);

            InvoiceResponseDTO invoiceResponseDTO = new InvoiceResponseDTO()
            {
                Id        = fooItem.Id,
                InvoiceNo = fooItem.InvoiceNo,
                Date      = fooItem.Date,
                Memo      = fooItem.Memo,
                user      = new UserDTO()
                {
                    Id = fooUser.Id
                }
            };

            apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted,
                                               ErrorMessageEnum.None, payload: invoiceResponseDTO);
            return(Accepted(apiResult));
        }