コード例 #1
0
        public ActionResult EditPlannedBT(int id = 0, string selectedDepartment = null)
        {
            BusinessTrip businessT = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            ViewBag.JSDatePattern = MvcApplication.JSDatePattern;

            if (businessT == null || (!businessT.Status.HasFlag(BTStatus.Planned)))
            {
                return(HttpNotFound());
            }
            else
            {
                ViewBag.EmployeeInformation = businessT.BTof.LastName + " " + businessT.BTof.FirstName + " (" + businessT.BTof.EID + ") from " + businessT.BTof.Department.DepartmentName;
                if (businessT.BTof.Visa != null)
                {
                    ViewBag.EmployeeVisa = businessT.BTof.Visa;
                }
            }

            BusinessTripViewModel businessTrip = new BusinessTripViewModel(businessT);

            ViewBag.SelectedDepartment = selectedDepartment;
            ViewBag.LocationsList      = LocationsDropDownList(businessT.LocationID);
            ViewBag.UnitsList          = UnitsDropDownList(businessT.UnitID);
            return(View("EditPlannedBT", businessTrip));
        }
コード例 #2
0
        public void Constructor_GivenABusinessTripEntity_InitializationSuccesful()
        {
            BusinessTripEntity businessTripEntity = new BusinessTripEntity()
            {
                StartingDate          = DateTime.Now,
                ClientLocation        = "Location",
                ClientName            = "Name",
                MeansOfTransportation = "Car",
                Accomodation          = "acc",
                Status = BusinessTripStatus.Accepted,
                Id     = Guid.NewGuid(),
                User   = new UserEntity()
                {
                    Name = "Name"
                }
            };

            var businessTripViewModel = new BusinessTripViewModel(businessTripEntity);

            Assert.AreEqual(businessTripViewModel.StartingDate, businessTripEntity.StartingDate);
            Assert.AreEqual(businessTripViewModel.Location, businessTripEntity.ClientLocation);
            Assert.AreEqual(businessTripViewModel.Name, businessTripEntity.User.Name);
            Assert.AreEqual(businessTripViewModel.MeansOfTransportaion, businessTripEntity.MeansOfTransportation);
            Assert.AreEqual(businessTripViewModel.Accomodation, businessTripEntity.Accomodation);
            Assert.AreEqual(businessTripViewModel.Status, businessTripEntity.Status);
            Assert.AreEqual(businessTripViewModel.Id, businessTripEntity.Id);
        }
コード例 #3
0
        public void CanFilterTripsByProject()
        {
            //Arrange
            Mock <IBusinessTripRepository> mock = new Mock <IBusinessTripRepository>();

            mock.Setup(t => t.BusinessTrips).Returns(new BusinessTrip[]
            {
                new BusinessTrip {
                    BusinessTripID = 1, Project = new Project {
                        Symbol = "p1"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 2, Project = new Project {
                        Symbol = "p2"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 3, Project = new Project {
                        Symbol = "p2"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 4, Project = new Project {
                        Symbol = "p1"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 5, Project = new Project {
                        Symbol = "p1"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 6, Project = new Project {
                        Symbol = "p3"
                    }
                }
            }.AsQueryable());

            BusinessTripController controller = new BusinessTripController(mock.Object);

            controller.PageSize = 6;

            //Act
            BusinessTripViewModel result1 = controller.List("p1").ViewData.Model as BusinessTripViewModel;
            BusinessTripViewModel result2 = controller.List("p2").ViewData.Model as BusinessTripViewModel;

            BusinessTrip[] tripArraP1 = result1.BusinessTrips.ToArray();
            BusinessTrip[] tripArraP2 = result2.BusinessTrips.ToArray();

            //Assert
            Assert.Equal(3, tripArraP1.Length);
            Assert.Equal(2, tripArraP2.Length);
            Assert.Equal(1, tripArraP1[0].BusinessTripID);
        }
コード例 #4
0
ファイル: ACCController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult CancelReportedBTConfirm(int id = 0, string cancelComment = "", string selectedDepartment = null)
        {
            BusinessTrip businessTrip = null;

            if (repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault() == null)
            {
                return(HttpNotFound());
            }
            else
            {
                businessTrip = new BusinessTrip(repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault());
                businessTrip.CancelComment = cancelComment;

                if ((businessTrip.Status == (BTStatus.Confirmed | BTStatus.Reported)) &&
                    ((businessTrip.CancelComment != null) && (businessTrip.CancelComment != String.Empty)))
                {
                    Employee            author = repository.Users.Where(e => e.EID == HttpContext.User.Identity.Name).FirstOrDefault();
                    List <BusinessTrip> selectedBusinessTripsList = new List <BusinessTrip>();
                    businessTrip.Status = BTStatus.Confirmed | BTStatus.Cancelled;

                    if (businessTrip.BTof.Visa != null)
                    {
                        businessTrip.BTof.Visa.DaysUsedInBT -= CountingDaysUsedInBT(businessTrip);
                        businessTrip.BTof.Visa.EntriesUsedInBT--;
                    }
                    try
                    {
                        repository.SaveBusinessTrip(businessTrip);
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(Json(new { error = modelError }));
                    }
                    catch (VacationAlreadyExistException)
                    {
                        return(Json(new { error = btCreationError }));
                    }
                    selectedBusinessTripsList.Add(businessTrip);
                    messenger.Notify(new Message(MessageType.ACCCancelsConfirmedReportedToADM, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.ACCCancelsConfirmedReportedToBTM, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.ACCCancelsConfirmedReportedToEMP, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.ACCCancelsConfirmedReportedToResponsible, selectedBusinessTripsList, author));
                    return(Json(new { success = "success" }));
                }
                else
                {
                    ModelState.AddModelError("", "Please, enter cancel comment.");
                    BusinessTripViewModel bTripmodel = new BusinessTripViewModel(businessTrip);
                    ViewBag.SelectedDepartment = selectedDepartment;

                    return(View(bTripmodel));
                }
            }
        }
コード例 #5
0
ファイル: ACCController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult ShowAccountableBTData(int id = 0)
        {
            BusinessTrip businessTrip = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessTrip == null)
            {
                return(HttpNotFound());
            }
            BusinessTripViewModel businessTripModel = new BusinessTripViewModel(businessTrip);

            return(View(businessTripModel));
        }
コード例 #6
0
        public static string CustomBtModelStyle(this HtmlHelper helper, BusinessTripViewModel businessTripModel)
        {
            if (businessTripModel != null)
            {
                if (businessTripModel.Status == (BTStatus.Confirmed | BTStatus.Cancelled))
                {
                    return("color: red; text-decoration: line-through;");
                }
            }

            return("");
        }
コード例 #7
0
        public ActionResult ShowBTData(int id = 0, string selectedDepartment = null)
        {
            BusinessTrip businessTrip = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessTrip == null)
            {
                return(HttpNotFound());
            }
            ViewBag.SelectedDepartment = selectedDepartment;
            BusinessTripViewModel businessTripModel = new BusinessTripViewModel(businessTrip);

            return(View(businessTripModel));
        }
コード例 #8
0
ファイル: ACCController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult ShowClosedBT(int id = 0, string searchString = "")
        {
            BusinessTrip bTrip = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (bTrip == null)
            {
                return(HttpNotFound());
            }

            BusinessTripViewModel btModel = new BusinessTripViewModel(bTrip);

            return(View(btModel));
        }
コード例 #9
0
        private async Task <ActionResult> GetViewAsync(int?id, string viewName)
        {
            try {
                BusinessTripDTO btDto = await _businessTripService.FindByIdAsync(id);

                BusinessTripViewModel bt = MapDTOWithViewModel(btDto);
                return(View(viewName, bt));
            }
            catch (ValidationException ex) {
                _logger.Warn(ex.Message);
                return(View("Error", new string[] { ex.Message }));
            }
        }
コード例 #10
0
        public async Task <ActionResult> Create(BusinessTripViewModel bt)
        {
            try {
                BusinessTripDTO btDto = MapViewModelWithDTO(bt);
                await(_businessTripService as BusinessTripService).CreateAsync(btDto);
                return(RedirectToAction("Index"));
            }
            catch (ValidationException ex) {
                _logger.Warn(ex.Message);
                ModelState.AddModelError(ex.Property, ex.Message);
            }
            ViewBag.Employees = await GetSelectListEmployeesAsync();

            return(View("Create", bt));
        }
コード例 #11
0
ファイル: DIRController.cs プロジェクト: ThiccPadx/AjourNet
        //public ActionResult Reject_BT_DIR_Confirm(int id = 0, string rejectComment = "", string selectedDepartment = null)
        public ActionResult Reject_BT_DIR_Confirm(BusinessTrip businessTrip, string selectedDepartment = null)
        {
            //BusinessTrip businessTrip = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessTrip == null)
            {
                return(HttpNotFound());
            }
            else
            {
                businessTrip = RewriteBTsPropsFromRepositoryWhenReject(businessTrip);
                businessTrip = RewriteBTsPropsFromRepositoryBTM(businessTrip);

                if ((businessTrip.RejectComment != null) && (businessTrip.RejectComment != String.Empty))
                {
                    Employee            author = repository.Users.Where(e => e.EID == HttpContext.User.Identity.Name).FirstOrDefault();
                    List <BusinessTrip> selectedBusinessTripsList = new List <BusinessTrip>();
                    businessTrip.Status           = BTStatus.Planned | BTStatus.Modified;
                    businessTrip.OrderStartDate   = null;
                    businessTrip.OrderEndDate     = null;
                    businessTrip.DaysInBtForOrder = null;

                    try
                    {
                        repository.SaveBusinessTrip(businessTrip);
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(Json(new { error = modelError }));
                    }
                    selectedBusinessTripsList.Add(businessTrip);
                    messenger.Notify(new Message(MessageType.DIRRejectsConfirmedToADM, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.DIRRejectsConfirmedToEMP, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.DIRRejectsConfirmedToBTM, selectedBusinessTripsList, author));
                    messenger.Notify(new Message(MessageType.DIRRejectsConfirmedToResponsible, selectedBusinessTripsList, author));
                    //messenger.Notify(new Message(MessageType.DIRRejectsConfirmedToACC, selectedBusinessTripsList, author));
                    return(RedirectToAction("DIRView", "Home", new { tab = Tabs.DIR.BusinessTrips, selectedDepartment = selectedDepartment }));
                }
                else
                {
                    ModelState.AddModelError("", "Please, enter reject comment.");
                    BusinessTripViewModel bTripModel = new BusinessTripViewModel(businessTrip);
                    ViewBag.SelectedDepartment = selectedDepartment;

                    return(View(bTripModel));
                }
            }
        }
コード例 #12
0
        public void CustomBtModelStyle_CancelledRegisteredBt_RedAndStrikeStyle()
        {
            //Arrange
            HtmlHelper   helper       = new HtmlHelper(viewContext, new FakeViewDataContainer());
            BusinessTrip businessTrip = new BusinessTrip {
                BusinessTripID = 1, Status = BTStatus.Cancelled | BTStatus.Registered, UnitID = 1, Unit = new Unit()
            };
            BusinessTripViewModel btModel = new BusinessTripViewModel(businessTrip);

            //Act
            string result   = helper.CustomBtModelStyle(btModel);
            string expected = "";

            //Assert
            Assert.AreEqual(result, expected);
        }
コード例 #13
0
        public void ShowBTData_ExistingBusinessTripID_ShowBTDataView()
        {
            //Arrange
            BusinessTrip bTrip = mock.Object.BusinessTrips.Where(b => b.BusinessTripID == 12).FirstOrDefault();


            //Act
            var result = (ViewResult)controller.ShowBTData(12);
            BusinessTripViewModel resultModel = (BusinessTripViewModel)result.Model;

            // Assert
            Assert.AreEqual("", result.ViewName);
            Assert.IsInstanceOf(typeof(ViewResult), result);
            Assert.IsInstanceOf(typeof(BusinessTripViewModel), ((ViewResult)result).Model);
            Assert.AreEqual(12, resultModel.BusinessTripID);
        }
コード例 #14
0
        public void CanSendPaginationViewModel()
        {
            //Arrange
            Mock <IBusinessTripRepository> mock = new Mock <IBusinessTripRepository>();

            mock.Setup(t => t.BusinessTrips).Returns(new BusinessTrip[]
            {
                new BusinessTrip {
                    BusinessTripID = 1, Destination = new Destination {
                        Name = "d1"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 2, Destination = new Destination {
                        Name = "d2"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 3, Destination = new Destination {
                        Name = "d3"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 4, Destination = new Destination {
                        Name = "d4"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 5, Destination = new Destination {
                        Name = "d5"
                    }
                }
            }.AsQueryable());

            BusinessTripController controller = new BusinessTripController(mock.Object);

            //Act
            BusinessTripViewModel result = controller.List(null, 2).ViewData.Model as BusinessTripViewModel;

            //Assert
            PagingInfo pagingInfo = result.PagingInfo;

            Assert.Equal(2, pagingInfo.CurrentPage);
            Assert.Equal(2, pagingInfo.ItemsPerPage);
            Assert.Equal(5, pagingInfo.TotalItems);
            Assert.Equal(3, pagingInfo.TotalPages);
        }
コード例 #15
0
        private BusinessTripViewModel MapDTOWithViewModel(BusinessTripDTO btDTO)
        {
            Mapper.Initialize(cfg => {
                cfg.CreateMap <BusinessTripDTO, BusinessTripViewModel>();
                cfg.CreateMap <EmployeeDTO, EmployeeViewModel>()
                .ForMember(e => e.AnnualLeaves, opt => opt.Ignore())
                .ForMember(e => e.Birth, opt => opt.Ignore())
                .ForMember(e => e.BusinessTrips, opt => opt.Ignore())
                .ForMember(e => e.Contacts, opt => opt.Ignore())
                .ForMember(e => e.Education, opt => opt.Ignore())
                .ForMember(e => e.Passport, opt => opt.Ignore())
                .ForMember(e => e.Post, opt => opt.Ignore());
            });
            BusinessTripViewModel bt = Mapper.Map <BusinessTripDTO, BusinessTripViewModel>(btDTO);

            return(bt);
        }
コード例 #16
0
        public async Task Delete_Get_ModelIsValid_RetrievesBusinessTripFromModel()
        {
            Mock <BusinessTripService> mock = new Mock <BusinessTripService>();

            mock.Setup(m => m.FindByIdAsync(It.IsAny <int?>())).ReturnsAsync((int?_id) => new BusinessTripDTO {
                Id   = _id.Value,
                Name = "02.09.2018_026"
            });
            BusinessTripController controller = GetNewBusinessTripController(mock.Object, null);

            ViewResult result = (await controller.Delete(2)) as ViewResult;

            BusinessTripViewModel model = result.ViewData.Model as BusinessTripViewModel;

            Assert.AreEqual(2, model.Id);
            Assert.AreEqual("02.09.2018_026", model.Name);
        }
コード例 #17
0
        public async Task Edit_Post_ModelIsInvalid_RetrievesBusinessTripFromModel()
        {
            Mock <BusinessTripService> bmock = new Mock <BusinessTripService>();

            bmock.Setup(m => m.EditAsync(It.IsAny <BusinessTripDTO>())).Throws(new ValidationException("", ""));
            Mock <EmployeeService> emock      = new Mock <EmployeeService>();
            BusinessTripController controller = GetNewBusinessTripController(bmock.Object, emock.Object);

            ViewResult result = (await controller.Edit(new BusinessTripViewModel {
                Id = 2,
                Name = "02.09.2018_026"
            })) as ViewResult;

            BusinessTripViewModel model = result.ViewData.Model as BusinessTripViewModel;

            Assert.AreEqual(2, model.Id);
            Assert.AreEqual("02.09.2018_026", model.Name);
        }
コード例 #18
0
ファイル: DIRController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult Reject_BT_DIR(int id = 0, string jsonRowVersionData = "", string selectedDepartment = null)
        {
            BusinessTrip businessTrip = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessTrip == null)
            {
                return(HttpNotFound());
            }

            if (jsonRowVersionData != "")
            {
                businessTrip.RowVersion = JsonConvert.DeserializeObject <byte[]>(jsonRowVersionData.Replace(" ", "+"));
            }

            ViewBag.SelectedDepartment = selectedDepartment;
            BusinessTripViewModel btripModel = new BusinessTripViewModel(businessTrip);

            return(View(btripModel));
        }
コード例 #19
0
ファイル: PUController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult EditFinishedBT(int id = 0, int selectedYear = 0)
        {
            ViewBag.JSDatePattern = MvcApplication.JSDatePattern;

            BusinessTrip businessT = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessT == null || businessT.EndDate.Date >= DateTime.Now.ToLocalTimeAzure().Date)
            {
                return(HttpNotFound());
            }

            ViewBag.EmployeeInformation = businessT.BTof.LastName + " " + businessT.BTof.FirstName + " (" + businessT.BTof.EID + ") from " + businessT.BTof.Department.DepartmentName;

            BusinessTripViewModel businessTrip = new BusinessTripViewModel(businessT);

            ViewBag.SelectedYear  = selectedYear;
            ViewBag.LocationsList = LocationsDropDownList(businessT.LocationID);
            ViewBag.UnitsList     = UnitsDropDownList(businessT.UnitID);
            return(View("EditFinishedBT", businessTrip));
        }
コード例 #20
0
ファイル: ACCController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult EditReportedBT(int id = 0, string selectedDepartment = null, string searchString = "")
        {
            ViewBag.JSDatePattern = MvcApplication.JSDatePattern;

            BusinessTrip businessT = repository.BusinessTrips.Where(b => b.BusinessTripID == id).FirstOrDefault();

            if (businessT == null || (!businessT.Status.HasFlag(BTStatus.Confirmed | BTStatus.Reported)))
            {
                return(HttpNotFound());
            }
            else
            {
                ViewBag.EmployeeInformation = businessT.BTof.LastName + " " + businessT.BTof.FirstName + " (" + businessT.BTof.EID + ") from " + businessT.BTof.Department.DepartmentName;
            }

            if (businessT.AccComment == null || businessT.AccComment == String.Empty)
            {
                businessT.AccComment = defaultAccComment;
            }

            BusinessTripViewModel businessTrip = new BusinessTripViewModel(businessT);

            ViewBag.SelectedDepartment = selectedDepartment;
            ViewBag.LocationsList      = LocationsDropDownList(businessT.LocationID);

            if (businessT.StartDate > DateTime.Now.ToLocalTimeAzure().Date&& businessT.EndDate >= DateTime.Now.ToLocalTimeAzure().Date)
            {
                return(View("EditReportedFutureBT", businessTrip));
            }
            else if (businessT.EndDate < DateTime.Now.ToLocalTimeAzure().Date)
            {
                return(View("EditReportedFinishedBT", businessTrip));
            }
            else
            {
                return(View("EditReportedCurrentBT", businessTrip));
            }
        }
コード例 #21
0
        public void prepareToXLSExportADM_NullableAreNotNull_Stringified()
        {
            //Arrange
            businessTripViewModel = new BusinessTripViewModel(mock.Object.BusinessTrips[0]);

            businessTripViewModel.Status = BTStatus.Confirmed | BTStatus.Reported;

            //Act
            List <string> result = businessTripViewModel.PrepareToXLSExportVU();

            //Assert
            Assert.AreEqual(10, result.Count);
            Assert.AreEqual("1", result[0]);
            Assert.AreEqual("andl", result[1]);
            Assert.AreEqual("Zarose Anastasia", result[2]);
            Assert.AreEqual("LDF", result[3]);
            Assert.AreEqual(string.Format("{0:yyyy-MM-dd}", new DateTime(2014, 12, 01)), result[4]);
            Assert.AreEqual(string.Format("{0:yyyy-MM-dd}", new DateTime(2014, 12, 10)), result[5]);
            Assert.AreEqual("Unknown", result[6]);
            Assert.AreEqual("", result[7]);
            Assert.AreEqual("", result[8]);
            Assert.AreEqual("", result[9]);
        }
コード例 #22
0
ファイル: PUController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult EditFinishedBT(BusinessTrip businessTrip, int selectedYear = 0)
        {
            if (businessTrip == null)
            {
                return(HttpNotFound());
            }

            BusinessTrip btFromRepository = repository.BusinessTrips.Where(b => b.BusinessTripID == businessTrip.BusinessTripID).FirstOrDefault();

            if (btFromRepository == null)
            {
                return(HttpNotFound());
            }

            else
            {
                if (ModelState.IsValid)
                {
                    LocationsDropDownList(businessTrip.LocationID);

                    Employee            author = repository.Users.Where(e => e.EID == HttpContext.User.Identity.Name).FirstOrDefault();
                    List <BusinessTrip> selectedBusinessTripsList = new List <BusinessTrip>();

                    businessTrip.BTof             = btFromRepository.BTof;
                    businessTrip.Status           = btFromRepository.Status;
                    businessTrip.OldStartDate     = btFromRepository.StartDate;
                    businessTrip.OldEndDate       = btFromRepository.EndDate;
                    businessTrip.OldLocationID    = btFromRepository.LocationID;
                    businessTrip.OldLocationTitle = btFromRepository.Location.Title;

                    int oldDaysUsedInBT = CountingDaysUsedInBT(btFromRepository);

                    businessTrip.LastCRUDedBy      = btFromRepository.LastCRUDedBy;
                    businessTrip.LastCRUDTimestamp = btFromRepository.LastCRUDTimestamp;



                    if (businessTrip.BTof.Visa != null)
                    {
                        businessTrip.BTof.Visa.DaysUsedInBT -= oldDaysUsedInBT;
                        businessTrip.BTof.Visa.DaysUsedInBT += CountingDaysUsedInBT(businessTrip);
                    }

                    try
                    {
                        repository.SaveBusinessTrip(businessTrip);
                        selectedBusinessTripsList.Add(businessTrip);

                        messenger.Notify(new Message(MessageType.PUEditsFInishedBT, selectedBusinessTripsList, author));
                        //messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToBTM, selectedBusinessTripsList, author));
                        //messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToDIR, selectedBusinessTripsList, author));
                        //messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToEMP, selectedBusinessTripsList, author));
                        //messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToResponsible, selectedBusinessTripsList, author));
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(Json(new { error = modelError }));
                    }
                    catch (VacationAlreadyExistException)
                    {
                        return(Json(new { error = btCreationError }));
                    }

                    return(Json(new { success = "success" }));
                }
            }
            BusinessTripViewModel btTripModel = new BusinessTripViewModel(businessTrip);

            btTripModel.BTof = repository.BusinessTrips.Where(bt => bt.BusinessTripID == businessTrip.BusinessTripID).Select(b => b.BTof).FirstOrDefault();

            ViewBag.JSDatePattern = MvcApplication.JSDatePattern;
            ViewBag.SelectedYear  = selectedYear;
            ViewBag.LocationsList = LocationsDropDownList(btTripModel.LocationID);
            ViewBag.UnitsList     = UnitsDropDownList(btTripModel.LocationID);
            return(View("EditReportedFinishedBT", businessTrip));
        }
コード例 #23
0
 public void SetUp()
 {
     mock = Mock_Repository.CreateMock();
     businessTripViewModel = new BusinessTripViewModel(new BusinessTrip());
 }
コード例 #24
0
ファイル: ACCController.cs プロジェクト: ThiccPadx/AjourNet
        public ActionResult EditReportedBT(BusinessTrip businessTrip, string selectedDepartment = null)
        {
            BusinessTrip btFromRepository = new BusinessTrip(repository.BusinessTrips.Where(b => b.BusinessTripID == businessTrip.BusinessTripID).FirstOrDefault());

            if (businessTrip == null || btFromRepository == null)
            {
                return(HttpNotFound());
            }
            else
            {
                if (ModelState.IsValid && businessTrip.Status.HasFlag(BTStatus.Reported))
                {
                    LocationsDropDownList(businessTrip.LocationID);

                    Employee            author = repository.Users.Where(e => e.EID == HttpContext.User.Identity.Name).FirstOrDefault();
                    List <BusinessTrip> selectedBusinessTripsList = new List <BusinessTrip>();

                    businessTrip.Status           = (btFromRepository.Status | BTStatus.Modified) & ~BTStatus.Reported;
                    businessTrip.OldStartDate     = btFromRepository.StartDate;
                    businessTrip.OldEndDate       = btFromRepository.EndDate;
                    businessTrip.OldLocationID    = btFromRepository.LocationID;
                    businessTrip.OldLocationTitle = btFromRepository.Location.Title;

                    int oldDaysUsedInBT = CountingDaysUsedInBT(btFromRepository);

                    //btFromRepository.StartDate = businessTrip.StartDate;
                    //btFromRepository.EndDate = businessTrip.EndDate;
                    //btFromRepository.LocationID = businessTrip.LocationID;
                    //btFromRepository.OrderStartDate = businessTrip.OrderStartDate;
                    //btFromRepository.OrderEndDate = businessTrip.OrderEndDate;
                    //btFromRepository.DaysInBtForOrder = businessTrip.DaysInBtForOrder;
                    //btFromRepository.RowVersion = businessTrip.RowVersion;

                    businessTrip.BTof                = btFromRepository.BTof;
                    businessTrip.CancelComment       = btFromRepository.CancelComment;
                    businessTrip.Comment             = btFromRepository.Comment;
                    businessTrip.Flights             = btFromRepository.Flights;
                    businessTrip.FlightsConfirmed    = btFromRepository.FlightsConfirmed;
                    businessTrip.Habitation          = btFromRepository.Habitation;
                    businessTrip.HabitationConfirmed = btFromRepository.HabitationConfirmed;
                    businessTrip.Invitation          = btFromRepository.Invitation;
                    businessTrip.Manager             = btFromRepository.Manager;
                    businessTrip.Purpose             = btFromRepository.Purpose;
                    businessTrip.RejectComment       = btFromRepository.RejectComment;
                    businessTrip.BTMComment          = btFromRepository.BTMComment;
                    businessTrip.Responsible         = btFromRepository.Responsible;
                    businessTrip.LastCRUDedBy        = btFromRepository.LastCRUDedBy;
                    businessTrip.LastCRUDTimestamp   = btFromRepository.LastCRUDTimestamp;
                    businessTrip.Location            = btFromRepository.Location;
                    businessTrip.AccComment          = btFromRepository.AccComment;



                    if (businessTrip.BTof.Visa != null)
                    {
                        businessTrip.BTof.Visa.DaysUsedInBT -= oldDaysUsedInBT;
                        businessTrip.BTof.Visa.EntriesUsedInBT--;
                    }

                    try
                    {
                        repository.SaveBusinessTrip(businessTrip);
                        selectedBusinessTripsList.Add(businessTrip);

                        messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToADM, selectedBusinessTripsList, author));
                        messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToBTM, selectedBusinessTripsList, author));
                        messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToDIR, selectedBusinessTripsList, author));
                        messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToEMP, selectedBusinessTripsList, author));
                        messenger.Notify(new Message(MessageType.ACCModifiesConfirmedReportedToResponsible, selectedBusinessTripsList, author));
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(Json(new { error = modelError }));
                    }
                    catch (VacationAlreadyExistException)
                    {
                        return(Json(new { error = btCreationError }));
                    }

                    return(Json(new { success = "success" }));
                }
            }
            BusinessTripViewModel btTripModel = new BusinessTripViewModel(businessTrip);

            LocationsDropDownList(businessTrip.LocationID);
            btTripModel.BTof           = repository.BusinessTrips.Where(bt => bt.BusinessTripID == businessTrip.BusinessTripID).Select(b => b.BTof).FirstOrDefault();
            ViewBag.SelectedDepartment = selectedDepartment;
            ViewBag.LocationsList      = LocationsDropDownList(btTripModel.LocationID);

            if (businessTrip.StartDate > DateTime.Now.ToLocalTimeAzure().Date)
            {
                return(View("EditReportedFutureBT", btTripModel));
            }
            else if (businessTrip.EndDate < DateTime.Now.ToLocalTimeAzure().Date)
            {
                return(View("EditReportedFinishedBT", businessTrip));
            }
            else
            {
                return(View("EditReportedCurrentBT", businessTrip));
            }
        }
コード例 #25
0
        public void CanPaginate()
        {
            //Arrange
            Mock <IBusinessTripRepository> mock = new Mock <IBusinessTripRepository>();

            mock.Setup(t => t.BusinessTrips).Returns((new BusinessTrip[] {
                new BusinessTrip {
                    BusinessTripID = 1, Destination = new Destination {
                        Name = "d1"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 2, Destination = new Destination {
                        Name = "d2"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 3, Destination = new Destination {
                        Name = "d3"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 4, Destination = new Destination {
                        Name = "d4"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 5, Destination = new Destination {
                        Name = "d5"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 6, Destination = new Destination {
                        Name = "d6"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 7, Destination = new Destination {
                        Name = "d7"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 8, Destination = new Destination {
                        Name = "d8"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 9, Destination = new Destination {
                        Name = "d9"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 10, Destination = new Destination {
                        Name = "d10"
                    }
                },
                new BusinessTrip {
                    BusinessTripID = 11, Destination = new Destination {
                        Name = "d11"
                    }
                }
            }).AsQueryable <BusinessTrip>());

            BusinessTripController controller = new BusinessTripController(mock.Object);

            controller.PageSize = 10;

            //Act
            BusinessTripViewModel firstPageResult =
                controller.List(null, 1).ViewData.Model as BusinessTripViewModel;
            BusinessTripViewModel secondPageResult =
                controller.List(null, 2).ViewData.Model as BusinessTripViewModel;

            //Assert
            BusinessTrip[] firstPageTripsArray  = firstPageResult.BusinessTrips.ToArray();
            BusinessTrip[] secondPageTripsArray = secondPageResult.BusinessTrips.ToArray();

            Assert.True(firstPageTripsArray.Length == 10);
            Assert.True(secondPageTripsArray.Length == 1);

            Assert.Equal("d1", firstPageTripsArray[0].Destination.Name);
            Assert.Equal("d10", firstPageTripsArray[9].Destination.Name);
            Assert.Equal("d11", secondPageTripsArray[0].Destination.Name);
        }
コード例 #26
0
        public ActionResult Plan(BusinessTrip BTrip, string selectedDepartment = null)
        {
            ViewBag.JSDatePattern      = MvcApplication.JSDatePattern;
            ViewBag.SelectedDepartment = selectedDepartment;
            ViewBag.LocationsList      = LocationsDropDownList(BTrip.LocationID);
            ViewBag.UnitsList          = UnitsDropDownList(BTrip.UnitID);
            BusinessTrip businessTrip = BTrip;

            if (businessTrip.BusinessTripID == 0)
            {
                BusinessTrip BussinesTrip = (from e in repository.Employees
                                             where e.EmployeeID == businessTrip.EmployeeID
                                             from bts in e.BusinessTrips
                                             where
                                             (businessTrip.StartDate == bts.StartDate ||
                                              businessTrip.EndDate == bts.EndDate)
                                             select bts).FirstOrDefault();

                if (BussinesTrip != null && !BussinesTrip.Status.HasFlag(BTStatus.Cancelled))
                {
                    if (businessTrip.StartDate == businessTrip.EndDate)
                    {
                        if (BussinesTrip.LocationID == businessTrip.LocationID)
                        {
                            return(Json(new { error = btDuplication }));
                        }
                    }
                    else
                    {
                        if ((businessTrip.StartDate == BussinesTrip.StartDate && businessTrip.EndDate == BussinesTrip.EndDate) || BussinesTrip.LocationID == businessTrip.LocationID)
                        {
                            return(Json(new { error = btDuplication }));
                        }
                    }
                }

                foreach (BusinessTrip bt in repository.BusinessTrips.Where(bt => bt.EmployeeID == BTrip.EmployeeID))
                {
                    if (!bt.Status.HasFlag(BTStatus.Cancelled))
                    {
                        if ((BTrip.StartDate == bt.StartDate) && (BTrip.EndDate == bt.EndDate))
                        {
                            return(Json(new { error = btDuplication }));
                        }

                        if ((BTrip.EndDate == bt.StartDate) || (BTrip.StartDate == bt.EndDate) || (BTrip.StartDate == bt.StartDate) || (BTrip.EndDate == bt.EndDate))
                        {
                            if (BTrip.LocationID == bt.LocationID)
                            {
                                return(Json(new { error = btDuplication }));
                            }
                        }

                        if (isBetween(BTrip.StartDate, bt) || isBetween(BTrip.EndDate, bt) || isBetween(bt.StartDate, BTrip) || isBetween(bt.EndDate, BTrip))
                        {
                            return(Json(new { error = btDatesOverlay }));
                        }
                    }
                }
            }

            if (BTrip.BusinessTripID != 0)
            {
                BusinessTrip bsTrip = (from e in repository.Employees
                                       where e.EmployeeID == BTrip.EmployeeID
                                       from bt in e.BusinessTrips
                                       where
                                       (BTrip.StartDate == bt.StartDate ||
                                        BTrip.EndDate == bt.EndDate)     //&& BTrip.LocationID == bt.LocationID
                                       select bt).FirstOrDefault();

                if (bsTrip != null && bsTrip.BusinessTripID != BTrip.BusinessTripID && !bsTrip.Status.HasFlag(BTStatus.Cancelled))
                {
                    if (businessTrip.StartDate == businessTrip.EndDate)
                    {
                        if (bsTrip.LocationID == businessTrip.LocationID)
                        {
                            return(Json(new { error = btDuplication }));
                        }
                    }
                    else
                    {
                        if ((businessTrip.StartDate == bsTrip.StartDate && businessTrip.EndDate == bsTrip.EndDate) || bsTrip.LocationID == businessTrip.LocationID)
                        {
                            return(Json(new { error = btDuplication }));
                        }
                    }
                }

                foreach (BusinessTrip bt in repository.BusinessTrips.Where(bt => (bt.EmployeeID == BTrip.EmployeeID && bt.BusinessTripID != BTrip.BusinessTripID)))
                {
                    if (!bt.Status.HasFlag(BTStatus.Cancelled))
                    {
                        if ((BTrip.StartDate == bt.StartDate) && (BTrip.EndDate == bt.EndDate))
                        {
                            return(Json(new { error = btDuplication }));
                        }

                        if ((BTrip.EndDate == bt.StartDate) || (BTrip.StartDate == bt.EndDate) || (BTrip.StartDate == bt.StartDate) || (BTrip.EndDate == bt.EndDate))
                        {
                            if (BTrip.LocationID == bt.LocationID)
                            {
                                return(Json(new { error = btDuplication }));
                            }
                        }

                        if (isBetween(BTrip.StartDate, bt) || isBetween(BTrip.EndDate, bt) || isBetween(bt.StartDate, BTrip) || isBetween(bt.EndDate, BTrip))
                        {
                            return(Json(new { error = btDatesOverlay }));
                        }
                    }
                }

                businessTrip = RewriteBTsPropsAfterPlanningFromRepository(BTrip);
                businessTrip.RejectComment = null;
            }


            if (ModelState.IsValid)
            {
                try
                {
                    AddLastCRUDDataToBT(businessTrip);
                    businessTrip.Location = repository.Locations.Where(l => l.LocationID == businessTrip.LocationID).FirstOrDefault();
                    businessTrip.Unit     = repository.Units.Where(l => l.UnitID == businessTrip.UnitID).FirstOrDefault();

                    repository.SaveBusinessTrip(businessTrip);
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Json(new { error = modelError }));
                }
                catch (VacationAlreadyExistException)
                {
                    return(Json(new { error = btCreationError }));
                }

                IEnumerable <Employee> empList = SelectEmployees(selectedDepartment, null);
                return(View("TableViewBTADM", empList.ToList()));
            }

            BusinessTripViewModel bTripModel = new BusinessTripViewModel(businessTrip);

            return(View("Plan", bTripModel));
        }